From 51bfd60723b5b342e0ed6aa0fc1b9693cce97fcf Mon Sep 17 00:00:00 2001 From: Ruben Orduz Date: Fri, 31 Aug 2018 15:47:02 -0400 Subject: [PATCH] Add option for custom gpg command Signed-off-by: Ruben Orduz --- lib/deb/s3/cli.rb | 6 ++++++ lib/deb/s3/release.rb | 10 ++++++---- lib/deb/s3/utils.rb | 2 ++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/deb/s3/cli.rb b/lib/deb/s3/cli.rb index d9228d0..44b3898 100644 --- a/lib/deb/s3/cli.rb +++ b/lib/deb/s3/cli.rb @@ -96,6 +96,11 @@ class Deb::S3::CLI < Thor :type => :string, :desc => "Additional command line options to pass to GPG when signing." + class_option :gpg_cmd, + :default => "", + :type => :string, + :desc => "Arbitrary gpg command to run for signing." + class_option :encryption, :default => false, :type => :boolean, @@ -597,6 +602,7 @@ def configure_s3_client Deb::S3::Utils.bucket = options[:bucket] Deb::S3::Utils.signing_key = options[:sign] Deb::S3::Utils.gpg_options = options[:gpg_options] + Deb::S3::Utils.gpg_cmd = options[:gpg_cmd] Deb::S3::Utils.prefix = options[:prefix] Deb::S3::Utils.encryption = options[:encryption] diff --git a/lib/deb/s3/release.rb b/lib/deb/s3/release.rb index 95535e7..8196fad 100644 --- a/lib/deb/s3/release.rb +++ b/lib/deb/s3/release.rb @@ -102,9 +102,11 @@ def write_to_s3 # sign the file, if necessary if Deb::S3::Utils.signing_key + local_file = release_tmp.path+".asc" key_param = Deb::S3::Utils.signing_key != "" ? "--default-key=#{Deb::S3::Utils.signing_key}" : "" - if system("gpg -a #{key_param} --digest-algo SHA256 #{Deb::S3::Utils.gpg_options} -s --clearsign #{release_tmp.path}") - local_file = release_tmp.path+".asc" + gpg_cmd = Deb::S3::Utils.gpg_cmd != "" ? Deb::S3::Utils.gpg_cmd : "gpg" + + if system("#{gpg_cmd} -a #{key_param} --digest-algo SHA256 #{Deb::S3::Utils.gpg_options} -s --clearsign #{release_tmp.path}") remote_file = "dists/#{@codename}/InRelease" yield remote_file if block_given? raise "Unable to locate InRelease file" unless File.exists?(local_file) @@ -113,8 +115,8 @@ def write_to_s3 else raise "Signing the InRelease file failed." end - if system("gpg -a #{key_param} --digest-algo SHA256 #{Deb::S3::Utils.gpg_options} -b #{release_tmp.path}") - local_file = release_tmp.path+".asc" + + if system("#{gpg_cmd} -a #{key_param} --digest-algo SHA256 #{Deb::S3::Utils.gpg_options} -b #{release_tmp.path}") remote_file = self.filename+".gpg" yield remote_file if block_given? raise "Unable to locate Release signature file" unless File.exists?(local_file) diff --git a/lib/deb/s3/utils.rb b/lib/deb/s3/utils.rb index 5ae06cf..8b014da 100644 --- a/lib/deb/s3/utils.rb +++ b/lib/deb/s3/utils.rb @@ -16,6 +16,8 @@ def signing_key; @signing_key end def signing_key= v; @signing_key = v end def gpg_options; @gpg_options end def gpg_options= v; @gpg_options = v end + def gpg_cmd; @gpg_cmd end + def gpg_cmd= v; @gpg_cmd = v end def prefix; @prefix end def prefix= v; @prefix = v end def encryption; @encryption end