aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/Gpg.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/Gpg.scala')
-rw-r--r--src/main/scala/Gpg.scala36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/main/scala/Gpg.scala b/src/main/scala/Gpg.scala
new file mode 100644
index 0000000..cde4dba
--- /dev/null
+++ b/src/main/scala/Gpg.scala
@@ -0,0 +1,36 @@
+package io.crashbox.gpg
+
+import java.io.File
+
+import scala.util.control.NonFatal
+import sys.process._
+
+class Gpg(
+ command: String,
+ options: Seq[String] = Seq.empty,
+ keyId: Option[String] = None)(log: String => Unit = System.err.println) {
+
+ def run(params: String*): Int =
+ try {
+ val idOption = keyId.toSeq.flatMap(id => Seq("--local-user", id))
+ val process = Process(command, options ++ idOption ++ params).run()
+ process.exitValue()
+ } catch {
+ case NonFatal(ex) =>
+ log(ex.getMessage)
+ 127
+ }
+
+ def sign(file: File): Option[File] = {
+ val out = new File(file.getAbsolutePath + ".asc")
+ run("--armor",
+ "--output",
+ out.getAbsolutePath,
+ "--detach-sign",
+ file.getAbsolutePath) match {
+ case 0 => Some(out)
+ case _ => None
+ }
+ }
+
+}