mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
48 lines
1.4 KiB
Ruby
48 lines
1.4 KiB
Ruby
![]() |
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
|