From 92a6a557f5778a9b1a72a11ab49cf6b2ce79cf68 Mon Sep 17 00:00:00 2001 From: Dominyk Tiller Date: Wed, 10 Aug 2016 04:50:59 +0100 Subject: [PATCH] gpg: add initial bare-bones wrapper --- Library/Homebrew/gpg.rb | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Library/Homebrew/gpg.rb diff --git a/Library/Homebrew/gpg.rb b/Library/Homebrew/gpg.rb new file mode 100644 index 0000000000..166985e6d3 --- /dev/null +++ b/Library/Homebrew/gpg.rb @@ -0,0 +1,47 @@ +require "utils" + +class Gpg + # Should ideally be using `GPGRequirement.new.gpg2`, etc to get path here but + # calling that directly leads to: + # requirement.rb:139:in `which_all': uninitialized constant Requirement::ORIGINAL_PATHS (NameError) + # when i.e. including the gpg syntax in wget. Not problematic if not used by formula code. + # For now, the path determination blob of code has been semi-modified for here. + # Look into this more. + def self.gpg + which("gpg") do |gpg| + gpg_short_version = Utils.popen_read(gpg, "--version")[/\d\.\d/, 0] + next unless gpg_short_version + Version.create(gpg_short_version.to_s) == Version.create("2.0") + end + end + + def self.gpg2 + which("gpg2") do |gpg2| + gpg2_short_version = Utils.popen_read(gpg2, "--version")[/\d\.\d/, 0] + next unless gpg2_short_version + Version.create(gpg2_short_version.to_s) == Version.create("2.0") + end + end + + GPG_EXECUTABLE = gpg2 || gpg + + def self.available? + File.exist?(GPG_EXECUTABLE.to_s) && File.executable?(GPG_EXECUTABLE) + end + + def self.create_test_key(path) + odie "No GPG present to test against!" unless available? + + (path/"batch.gpg").write <<-EOS.undent + Key-Type: RSA + Key-Length: 2048 + Subkey-Type: RSA + Subkey-Length: 2048 + Name-Real: Testing + Name-Email: testing@foo.bar + Expire-Date: 1d + %commit + EOS + system GPG_EXECUTABLE, "--batch", "--gen-key", "batch.gpg" + end +end