From 358777fad2afbf7a7f3719367e1f4b0d73c2a42e Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Tue, 10 Apr 2018 21:37:07 -0700 Subject: Initial commit --- src/main/scala/Gpg.scala | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/main/scala/Gpg.scala (limited to 'src/main/scala/Gpg.scala') 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 + } + } + +} -- cgit v1.2.3