2017-05-10 23:18:42 +08:00
require " hbc/container/base "
module Hbc
class Container
class Gpg < Base
2018-07-16 09:16:50 +02:00
def self . can_extract? ( path : , magic_number : )
path . extname == " .gpg "
2017-05-10 23:18:42 +08:00
end
def import_key
if @cask . gpg . nil?
2017-05-11 16:26:16 +08:00
raise CaskError , " Expected to find gpg public key in formula. Cask ' #{ @cask } ' must add: 'gpg :embedded, key_id: [Public Key ID]' or 'gpg :embedded, key_url: [Public Key URL]' "
2017-05-10 23:18:42 +08:00
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
2018-07-14 03:25:42 +02:00
@command . run! ( " gpg " ,
args : args ,
env : { " PATH " = > PATH . new ( Formula [ " gnupg " ] . opt_bin , ENV [ " PATH " ] ) } )
2017-05-10 23:18:42 +08:00
end
2018-07-16 20:22:37 +02:00
def extract_to_dir ( unpack_dir , basename : )
2017-05-10 23:18:42 +08:00
import_key
2018-07-16 20:22:37 +02:00
Dir . mktmpdir do | tmp_unpack_dir |
2018-07-14 03:25:42 +02:00
@command . run! ( " gpg " ,
2018-07-16 20:22:37 +02:00
args : [ " --batch " , " --yes " , " --output " , Pathname ( tmp_unpack_dir ) . join ( basename . basename ( " .gpg " ) ) , " --decrypt " , path ] ,
2018-07-14 03:25:42 +02:00
env : { " PATH " = > PATH . new ( Formula [ " gnupg " ] . opt_bin , ENV [ " PATH " ] ) } )
2017-05-10 23:18:42 +08:00
2018-07-16 20:22:37 +02:00
extract_nested_inside ( tmp_unpack_dir , to : unpack_dir )
2017-05-10 23:18:42 +08:00
end
end
2018-07-14 03:25:42 +02:00
def dependencies
@dependencies || = [ Formula [ " gnupg " ] ]
end
2017-05-10 23:18:42 +08:00
end
end
end