def WKD.wksclient; @@wksclient end
def WKD.wksclient=(x); @@wksclient = x end
+ # Convert a list of keyring filenames into GPG keyring arguments
+ def WKD.keyring_args(args)
+ return [ "--no-default-keyring",
+ *args.map { |x| "--keyring=" + (x['/'] ? x : "./" + x) } ]
+ end
+
+ # Helper for implementing export filters below
+ def WKD.export(item, uid, *args)
+ data, result = Open3.capture2(@@gpg2, "--export", *args,
+ *WKD.keyring_args(item[:keyrings]), uid.chomp)
+ raise "gpg failed" unless result.success?
+ return data
+ end
+
# Return a list list of all UIDs known from the given GPG keyrings.
def WKD.uids_from_keyrings(*args)
uids = {}
Open3.popen2(@@gpg2,
- "--no-default-keyring", "--with-colons", "--list-keys",
- *args.map { |x| "--keyring=" + (x['/'] ? x : "./" + x) }
+ "--with-colons", "--list-keys", *WKD.keyring_args(args)
) do |stdin, stdout, result|
stdin.close
stdout.each do |line|
type :text => :binary
def run(content, params = {})
- args = @item[:keyrings].map { |x|
- "--keyring=" + (x['/'] ? x : "./" + x)
- };
- args.append("--armor") if params[:armor]
-
- dummy, result = Open3.capture2(WKD.gpg2, "--export",
- "--no-default-keyring", "--output=" + output_filename,
- *args, content.chomp)
- raise "gpg failed" unless result.success?
+ WKD.export(item, content, "--output=" + output_filename)
+ end
+end
+
+class WKDExportArmor < Nanoc::Filter
+ identifier :wkd_export_armor
+ type :text
+
+ def run(content, params = {})
+ data = WKD.export(item, content, "--armor")
+ return data
end
end