Support GPG (signed data) container in Homebrew Cask
This commit is contained in:
parent
f1d4c4be78
commit
3668a7abb1
@ -6,6 +6,7 @@ require "hbc/container/criteria"
|
||||
require "hbc/container/dmg"
|
||||
require "hbc/container/executable"
|
||||
require "hbc/container/generic_unar"
|
||||
require "hbc/container/gpg"
|
||||
require "hbc/container/gzip"
|
||||
require "hbc/container/lzma"
|
||||
require "hbc/container/naked"
|
||||
@ -40,6 +41,7 @@ module Hbc
|
||||
Gzip, # pure gzip
|
||||
Lzma, # pure lzma
|
||||
Xz, # pure xz
|
||||
Gpg, # GnuPG signed data
|
||||
Executable,
|
||||
]
|
||||
# for explicit use only (never autodetected):
|
||||
|
||||
41
Library/Homebrew/cask/lib/hbc/container/gpg.rb
Normal file
41
Library/Homebrew/cask/lib/hbc/container/gpg.rb
Normal file
@ -0,0 +1,41 @@
|
||||
require "tmpdir"
|
||||
|
||||
require "hbc/container/base"
|
||||
|
||||
module Hbc
|
||||
class Container
|
||||
class Gpg < Base
|
||||
def self.me?(criteria)
|
||||
criteria.extension(/GPG/n)
|
||||
end
|
||||
|
||||
def import_key
|
||||
if @cask.gpg.nil?
|
||||
raise CaskError, "Expected to find gpg public key in formula. Cask '#{@cask}' must add: key_id or key_url"
|
||||
end
|
||||
|
||||
args = if @cask.gpg.key_id
|
||||
["--recv-keys", @cask.gpg.key_id]
|
||||
elsif @cask.gpg.key_url
|
||||
["--fetch-key", @cask.gpg.key_url.to_s]
|
||||
end
|
||||
|
||||
@command.run!("gpg", args: args)
|
||||
end
|
||||
|
||||
def extract
|
||||
if (gpg = which("gpg")).nil?
|
||||
raise CaskError, "Expected to find gpg executable. Cask '#{@cask}' must add: depends_on formula: 'gpg'"
|
||||
end
|
||||
|
||||
import_key
|
||||
|
||||
Dir.mktmpdir do |unpack_dir|
|
||||
@command.run!(gpg, args: ["--batch", "--yes", "--output", Pathname(unpack_dir).join(File.basename(@path.basename)), "--decrypt", @path])
|
||||
|
||||
extract_nested_inside(unpack_dir)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user