omnibus 6.1.7 → 6.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/lib/omnibus/build_version_dsl.rb +1 -0
  4. data/lib/omnibus/builder.rb +6 -5
  5. data/lib/omnibus/changelog_printer.rb +7 -4
  6. data/lib/omnibus/cleaner.rb +3 -0
  7. data/lib/omnibus/cli/changelog.rb +24 -24
  8. data/lib/omnibus/compressors/dmg.rb +3 -4
  9. data/lib/omnibus/fetchers/git_fetcher.rb +1 -0
  10. data/lib/omnibus/fetchers/net_fetcher.rb +2 -3
  11. data/lib/omnibus/health_check.rb +1 -1
  12. data/lib/omnibus/licensing.rb +2 -3
  13. data/lib/omnibus/logger.rb +2 -1
  14. data/lib/omnibus/manifest.rb +1 -1
  15. data/lib/omnibus/packagers/appx.rb +1 -2
  16. data/lib/omnibus/packagers/base.rb +1 -0
  17. data/lib/omnibus/packagers/bff.rb +6 -8
  18. data/lib/omnibus/packagers/deb.rb +7 -10
  19. data/lib/omnibus/packagers/ips.rb +3 -6
  20. data/lib/omnibus/packagers/makeself.rb +1 -2
  21. data/lib/omnibus/packagers/msi.rb +12 -11
  22. data/lib/omnibus/packagers/pkg.rb +3 -6
  23. data/lib/omnibus/packagers/rpm.rb +11 -12
  24. data/lib/omnibus/packagers/solaris.rb +4 -4
  25. data/lib/omnibus/packagers/windows_base.rb +7 -6
  26. data/lib/omnibus/project.rb +1 -0
  27. data/lib/omnibus/publisher.rb +2 -2
  28. data/lib/omnibus/software.rb +18 -11
  29. data/lib/omnibus/templating.rb +1 -1
  30. data/lib/omnibus/util.rb +3 -2
  31. data/lib/omnibus/version.rb +1 -1
  32. data/omnibus.gemspec +2 -2
  33. data/spec/functional/builder_spec.rb +2 -1
  34. data/spec/functional/fetchers/file_fetcher_spec.rb +4 -4
  35. data/spec/functional/fetchers/git_fetcher_spec.rb +4 -4
  36. data/spec/functional/fetchers/net_fetcher_spec.rb +5 -6
  37. data/spec/functional/fetchers/path_fetcher_spec.rb +4 -4
  38. data/spec/functional/licensing_spec.rb +5 -5
  39. data/spec/support/examples.rb +3 -4
  40. data/spec/unit/builder_spec.rb +9 -9
  41. data/spec/unit/changelogprinter_spec.rb +8 -6
  42. data/spec/unit/compressor_spec.rb +3 -3
  43. data/spec/unit/fetchers/net_fetcher_spec.rb +16 -17
  44. data/spec/unit/health_check_spec.rb +2 -6
  45. data/spec/unit/library_spec.rb +2 -1
  46. data/spec/unit/manifest_diff_spec.rb +2 -2
  47. data/spec/unit/manifest_spec.rb +1 -1
  48. data/spec/unit/metadata_spec.rb +8 -11
  49. data/spec/unit/omnibus_spec.rb +1 -1
  50. data/spec/unit/packagers/bff_spec.rb +2 -2
  51. data/spec/unit/packagers/msi_spec.rb +2 -2
  52. data/spec/unit/packagers/pkgsrc_spec.rb +1 -1
  53. data/spec/unit/packagers/solaris_spec.rb +7 -7
  54. data/spec/unit/project_spec.rb +2 -2
  55. data/spec/unit/publisher_spec.rb +1 -2
  56. data/spec/unit/publishers/artifactory_publisher_spec.rb +2 -4
  57. data/spec/unit/publishers/s3_publisher_spec.rb +2 -4
  58. data/spec/unit/s3_cacher_spec.rb +2 -6
  59. data/spec/unit/s3_helpers_spec.rb +2 -2
  60. data/spec/unit/software_spec.rb +9 -9
  61. data/spec/unit/util_spec.rb +1 -2
  62. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d4a888a9f24e116ea9364773eebf3c9711652623d1000822c0c8f04287cce310
4
- data.tar.gz: bdea1d386922a7c85654c318fba2746667fe63025d55f491e95d520efab04ee5
3
+ metadata.gz: 13c799a70980298bd1b9a949570129950948678e848013b5cc45e9c16163eed4
4
+ data.tar.gz: f674f27153dd215d6718e988b6d4bc7b8c30e3b3b00e3b89aaffbab1c14a7bdd
5
5
  SHA512:
6
- metadata.gz: b18ba881c3f75e78829b1b112e7a8679d4be330daf7b707a8ac39058d25c65dc55c9d009159edd8a70500c35617e49c4ea3a1713865f213a139dc35fe14c8da9
7
- data.tar.gz: 6f3f9ac8e6ef23fb3a10a093a9ca30367b115f9296bfaee37c9af2d3740a37a5d650cc2e4c464bebcaf32bd2db49eacd57dd1df9c303c57449247dc598725877
6
+ metadata.gz: 7bd5732c6df36ef63dff1bf783117fe40eb49934209e41fe4f5b9f03e64998a3f69e30d86183b4b70d9f9780682a8641bb1bde8c229213be53b69f30d6267259
7
+ data.tar.gz: 74bbdef1a133d657e75853a0a44ee3eea4dc461bc8fda2a52c5623656e0a289f1c40ba9906da8179686e3998354a088d5e2410dfe6b2519c41f45823613317c6
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
3
  require "rspec/core/rake_task"
4
- [:unit, :functional].each do |type|
4
+ %i{unit functional}.each do |type|
5
5
  RSpec::Core::RakeTask.new(type) do |t|
6
6
  t.pattern = "spec/#{type}/**/*_spec.rb"
7
7
  t.rspec_opts = [].tap do |a|
@@ -134,6 +134,7 @@ module Omnibus
134
134
  def has_timestamp?(version)
135
135
  _ver, build_info = version.split("+")
136
136
  return false if build_info.nil?
137
+
137
138
  build_info.split(".").any? do |part|
138
139
  begin
139
140
  Time.strptime(part, Omnibus::BuildVersion::TIMESTAMP_FORMAT)
@@ -235,7 +235,8 @@ module Omnibus
235
235
  clean_patch_path = patch_path
236
236
  if windows?
237
237
  clean_patch_path = Pathname.new(patch_path).relative_path_from(
238
- Pathname.new(software.project_dir)).to_s
238
+ Pathname.new(software.project_dir)
239
+ ).to_s
239
240
  end
240
241
 
241
242
  if target
@@ -385,6 +386,7 @@ module Omnibus
385
386
  if app_software.nil?
386
387
  raise "could not find software definition for #{software_name}, add a dependency to it, or pass a lockdir argument to appbundle command."
387
388
  end
389
+
388
390
  app_software.project_dir
389
391
  end
390
392
 
@@ -500,8 +502,7 @@ module Omnibus
500
502
  render_template(source_path,
501
503
  destination: dest,
502
504
  mode: mode,
503
- variables: vars
504
- )
505
+ variables: vars)
505
506
  end
506
507
  end
507
508
  expose :erb
@@ -596,7 +597,7 @@ module Omnibus
596
597
  #
597
598
  def strip(path)
598
599
  regexp_ends = ".*(" + IGNORED_ENDINGS.map { |e| e.gsub(/\./, '\.') }.join("|") + ")$"
599
- regexp_patterns = IGNORED_PATTERNS.map { |e| ".*" + e.gsub(/\//, '\/') + ".*" }.join("|")
600
+ regexp_patterns = IGNORED_PATTERNS.map { |e| ".*" + e.gsub(%r{/}, '\/') + ".*" }.join("|")
600
601
  regexp = regexp_ends + "|" + regexp_patterns
601
602
 
602
603
  # Do not actually care if strip runs on non-strippable file, as its a no-op. Hence the `|| true` appended.
@@ -727,7 +728,7 @@ module Omnibus
727
728
  # config.guess.to. Default: "."
728
729
  # install [Array<Symbol>] parts of config.guess to copy.
729
730
  # Default: [:config_guess, :config_sub]
730
- def update_config_guess(target: ".", install: [:config_guess, :config_sub])
731
+ def update_config_guess(target: ".", install: %i{config_guess config_sub})
731
732
  build_commands << BuildCommand.new("update_config_guess `target: #{target} install: #{install.inspect}'") do
732
733
  config_guess_dir = "#{install_dir}/embedded/lib/config_guess"
733
734
  %w{config.guess config.sub}.each do |c|
@@ -8,9 +8,9 @@ module Omnibus
8
8
  end
9
9
 
10
10
  def print(new_version)
11
- puts "## #{new_version} (#{Time.now.strftime('%Y-%m-%d')})"
11
+ puts "## #{new_version} (#{Time.now.strftime("%Y-%m-%d")})"
12
12
  print_changelog
13
- if !diff.empty?
13
+ unless diff.empty?
14
14
  print_components
15
15
  puts ""
16
16
  end
@@ -23,7 +23,7 @@ module Omnibus
23
23
 
24
24
  def print_changelog(cl = changelog, indent = 0)
25
25
  cl.changelog_entries.each do |entry|
26
- puts "#{' ' * indent}* #{entry.sub("\n", "\n #{' ' * indent}")}\n"
26
+ puts "#{" " * indent}* #{entry.sub("\n", "\n #{" " * indent}")}\n"
27
27
  end
28
28
  end
29
29
 
@@ -36,6 +36,7 @@ module Omnibus
36
36
 
37
37
  def print_new_components
38
38
  return if diff.added.empty?
39
+
39
40
  puts "New Components"
40
41
  diff.added.each do |entry|
41
42
  puts "* #{entry[:name]} (#{entry[:new_version]})"
@@ -45,10 +46,11 @@ module Omnibus
45
46
 
46
47
  def print_updated_components
47
48
  return if diff.updated.empty?
49
+
48
50
  puts "Updated Components"
49
51
  diff.updated.each do |entry|
50
52
  puts sprintf("* %s (%.8s -> %.8s)",
51
- entry[:name], entry[:old_version], entry[:new_version])
53
+ entry[:name], entry[:old_version], entry[:new_version])
52
54
  repo_path = ::File.join(source_path, entry[:name].to_s)
53
55
  if entry[:source_type] == :git && ::File.directory?("#{repo_path}/.git")
54
56
  cl = ChangeLog.new(entry[:old_version], entry[:new_version], GitRepository.new("#{repo_path}"))
@@ -60,6 +62,7 @@ module Omnibus
60
62
 
61
63
  def print_removed_components
62
64
  return if diff.removed.empty?
65
+
63
66
  puts "Removed Components"
64
67
  diff.removed.each do |entry|
65
68
  puts "* #{entry[:name]} (#{entry[:old_version]})"
@@ -48,16 +48,19 @@ module Omnibus
48
48
 
49
49
  def clean_package_dir
50
50
  return unless purge?
51
+
51
52
  FileSyncer.glob("#{Config.package_dir}/**/*").each(&method(:remove_file))
52
53
  end
53
54
 
54
55
  def clean_cache_dir
55
56
  return unless purge?
57
+
56
58
  FileSyncer.glob("#{Config.cache_dir}/**/*").each(&method(:remove_file))
57
59
  end
58
60
 
59
61
  def clean_install_dir
60
62
  return unless purge?
63
+
61
64
  remove_file(@project.install_dir)
62
65
  end
63
66
 
@@ -30,42 +30,42 @@ module Omnibus
30
30
  # $ omnibus changelog generate
31
31
  #
32
32
  method_option :source_path,
33
- desc: "Path to local checkout of git dependencies",
34
- type: :string,
35
- default: "../"
33
+ desc: "Path to local checkout of git dependencies",
34
+ type: :string,
35
+ default: "../"
36
36
 
37
37
  method_option :starting_manifest,
38
- desc: "Path to version-manifest from the last version (we attempt to pull it from the git history if not given)",
39
- type: :string
38
+ desc: "Path to version-manifest from the last version (we attempt to pull it from the git history if not given)",
39
+ type: :string
40
40
 
41
41
  method_option :ending_manifest,
42
- desc: "Path to the version-manifest from the current version",
43
- type: :string,
44
- default: "version-manifest.json"
42
+ desc: "Path to the version-manifest from the current version",
43
+ type: :string,
44
+ default: "version-manifest.json"
45
45
 
46
46
  method_option :skip_components,
47
- desc: "Don't include component changes in the changelog",
48
- type: :boolean,
49
- default: false
47
+ desc: "Don't include component changes in the changelog",
48
+ type: :boolean,
49
+ default: false
50
50
 
51
51
  method_option :major,
52
- desc: "Bump the major version",
53
- type: :boolean,
54
- default: false
52
+ desc: "Bump the major version",
53
+ type: :boolean,
54
+ default: false
55
55
 
56
56
  method_option :minor,
57
- desc: "Bump the minor version",
58
- type: :boolean,
59
- default: true
57
+ desc: "Bump the minor version",
58
+ type: :boolean,
59
+ default: true
60
60
 
61
61
  method_option :patch,
62
- desc: "Bump the patch version",
63
- type: :boolean,
64
- default: false
62
+ desc: "Bump the patch version",
63
+ type: :boolean,
64
+ default: false
65
65
 
66
66
  method_option :version,
67
- desc: "Explicit version for this changelog",
68
- type: :string
67
+ desc: "Explicit version for this changelog",
68
+ type: :string
69
69
 
70
70
  desc "generate [START] [END]", "Generate a changelog for a new release"
71
71
  def generate(start_ref = nil, end_ref = nil)
@@ -78,8 +78,8 @@ module Omnibus
78
78
  end
79
79
 
80
80
  Omnibus::ChangeLogPrinter.new(ChangeLog.new(starting_revision, ending_revision),
81
- diff,
82
- @options[:source_path]).print(new_version)
81
+ diff,
82
+ @options[:source_path]).print(new_version)
83
83
  end
84
84
 
85
85
  private
@@ -234,8 +234,7 @@ module Omnibus
234
234
  pkg_name: packager.package_name,
235
235
  window_bounds: window_bounds,
236
236
  pkg_position: pkg_position,
237
- }
238
- )
237
+ })
239
238
 
240
239
  Dir.chdir(staging_dir) do
241
240
  shellout! <<-EOH.gsub(/^ {10}/, "")
@@ -316,10 +315,10 @@ module Omnibus
316
315
  Dir.chdir(staging_dir) do
317
316
  shellout! <<-EOH.gsub(/^ {10}/, "")
318
317
  # Convert the png to an icon
319
- sips -i "#{resource_path('icon.png')}"
318
+ sips -i "#{resource_path("icon.png")}"
320
319
 
321
320
  # Extract the icon into its own resource
322
- DeRez -only icns "#{resource_path('icon.png')}" > tmp.rsrc
321
+ DeRez -only icns "#{resource_path("icon.png")}" > tmp.rsrc
323
322
 
324
323
  # Append the icon reosurce to the DMG
325
324
  Rez -append tmp.rsrc -o "#{package_path}"
@@ -276,6 +276,7 @@ module Omnibus
276
276
  unless commit_ref
277
277
  raise UnresolvableGitReference.new(ref)
278
278
  end
279
+
279
280
  commit_ref
280
281
  end
281
282
 
@@ -31,7 +31,7 @@ module Omnibus
31
31
  ALL_EXTENSIONS = WIN_7Z_EXTENSIONS + TAR_EXTENSIONS
32
32
 
33
33
  # Digest types used for verifying file checksums
34
- DIGESTS = [:sha512, :sha256, :sha1, :md5].freeze
34
+ DIGESTS = %i{sha512 sha256 sha1 md5}.freeze
35
35
 
36
36
  #
37
37
  # A fetch is required if the downloaded_file (such as a tarball) does not
@@ -314,8 +314,7 @@ module Omnibus
314
314
  #
315
315
  # @return [[String]]
316
316
  #
317
- def extract_command
318
- end
317
+ def extract_command; end
319
318
 
320
319
  #
321
320
  # Primitively determine whether we should use gtar or tar to untar a file.
@@ -331,7 +331,7 @@ module Omnibus
331
331
  #
332
332
  def health_check_ldd
333
333
  regexp_ends = ".*(" + IGNORED_ENDINGS.map { |e| e.gsub(/\./, '\.') }.join("|") + ")$"
334
- regexp_patterns = IGNORED_PATTERNS.map { |e| ".*" + e.gsub(/\//, '\/') + ".*" }.join("|")
334
+ regexp_patterns = IGNORED_PATTERNS.map { |e| ".*" + e.gsub(%r{/}, '\/') + ".*" }.join("|")
335
335
  regexp = regexp_ends + "|" + regexp_patterns
336
336
 
337
337
  current_library = nil
@@ -130,8 +130,7 @@ module Omnibus
130
130
  #
131
131
  # @return [void]
132
132
  #
133
- def execute_pre_build(software)
134
- end
133
+ def execute_pre_build(software); end
135
134
 
136
135
  # Callback that gets called by Software#build_me after the build is done.
137
136
  # Invokes license copying for the given software. This ensures that
@@ -246,7 +245,7 @@ module Omnibus
246
245
 
247
246
  out << "This product bundles #{name} #{version},\n"
248
247
  out << "which is available under a \"#{license}\" License.\n"
249
- if !license_files.empty?
248
+ unless license_files.empty?
250
249
  out << "For details, see:\n"
251
250
  license_files.each do |license_file|
252
251
  out << "#{license_package_location(name, license_file)}\n"
@@ -102,6 +102,7 @@ module Omnibus
102
102
  #
103
103
  def add(severity, progname, &block)
104
104
  return true if io.nil? || severity < level
105
+
105
106
  message = format_message(severity, progname, yield)
106
107
  MUTEX.synchronize { io.write(message) }
107
108
  true
@@ -138,7 +139,7 @@ module Omnibus
138
139
  else
139
140
  left = "#{format_severity(severity)} | "
140
141
  end
141
- "#{left.rjust(LEFT)}#{Time.now.iso8601()} | #{message}\n"
142
+ "#{left.rjust(LEFT)}#{Time.now.iso8601} | #{message}\n"
142
143
  end
143
144
 
144
145
  #
@@ -44,7 +44,7 @@ module Omnibus
44
44
  end
45
45
 
46
46
  def add(name, entry)
47
- if ! entry.is_a? Omnibus::ManifestEntry
47
+ unless entry.is_a? Omnibus::ManifestEntry
48
48
  raise NotAManifestEntry, "#{entry} is not an Omnibus:ManifestEntry"
49
49
  end
50
50
 
@@ -69,8 +69,7 @@ module Omnibus
69
69
  version: windows_package_version,
70
70
  maintainer: project.maintainer,
71
71
  certificate_subject: certificate_subject.gsub('"', "&quot;"),
72
- }
73
- )
72
+ })
74
73
  end
75
74
 
76
75
  #
@@ -142,6 +142,7 @@ module Omnibus
142
142
  unless val.is_a?(TrueClass) || val.is_a?(FalseClass)
143
143
  raise InvalidValue.new(:skip_packager, "be TrueClass or FalseClass")
144
144
  end
145
+
145
146
  @skip_package ||= val
146
147
  end
147
148
  expose :skip_packager
@@ -153,12 +153,11 @@ module Omnibus
153
153
  destination: "#{scripts_staging_dir}/config",
154
154
  variables: {
155
155
  name: project.name,
156
- }
157
- )
156
+ })
158
157
  end
159
158
 
160
159
  File.open(File.join(scripts_staging_dir, "config"), "a") do |file|
161
- file.puts "mv '#{alt.gsub(/^#{staging_dir}/, '')}' '#{path.gsub(/^#{staging_dir}/, '')}'"
160
+ file.puts "mv '#{alt.gsub(/^#{staging_dir}/, "")}' '#{path.gsub(/^#{staging_dir}/, "")}'"
162
161
  end
163
162
 
164
163
  path = alt
@@ -189,8 +188,7 @@ module Omnibus
189
188
  description: project.description,
190
189
  files: files,
191
190
  scripts: scripts,
192
- }
193
- )
191
+ })
194
192
 
195
193
  # Print the full contents of the rendered template file for mkinstallp's use
196
194
  log.debug(log_key) { "Rendered Template:\n" + File.read(File.join(staging_dir, "gen.template")) }
@@ -214,19 +212,19 @@ module Omnibus
214
212
  # we will chown from 'project' on, rather than 'project/dir', which leaves
215
213
  # project owned by the build user (which is incorrect)
216
214
  # First - let's find out who we are.
217
- shellout!("sudo chown -Rh 0:0 #{File.join(staging_dir, project.install_dir.match(/^\/?(\w+)/).to_s)}")
215
+ shellout!("sudo chown -Rh 0:0 #{File.join(staging_dir, project.install_dir.match(%r{^/?(\w+)}).to_s)}")
218
216
  log.info(log_key) { "Creating .bff file" }
219
217
 
220
218
  # Since we want the owner to be root, we need to sudo the mkinstallp
221
219
  # command, otherwise it will not have access to the previously chowned
222
220
  # directory.
223
- shellout!("sudo /usr/sbin/mkinstallp -d #{staging_dir} -T #{File.join(staging_dir, 'gen.template')}")
221
+ shellout!("sudo /usr/sbin/mkinstallp -d #{staging_dir} -T #{File.join(staging_dir, "gen.template")}")
224
222
 
225
223
  # Print the full contents of the inventory file generated by mkinstallp
226
224
  # from within the staging_dir's .info folder (where control files for the
227
225
  # packaging process are kept.)
228
226
  log.debug(log_key) do
229
- "With .inventory file of:\n" + File.read("#{File.join( staging_dir, '.info', "#{safe_base_package_name}.inventory" )}")
227
+ "With .inventory file of:\n" + File.read("#{File.join( staging_dir, ".info", "#{safe_base_package_name}.inventory" )}")
230
228
  end
231
229
 
232
230
  # Copy the resulting package up to the package_dir
@@ -207,7 +207,7 @@ module Omnibus
207
207
  if null?(val)
208
208
  @compression_type || :gzip
209
209
  else
210
- unless val.is_a?(Symbol) && [:gzip, :xz, :none].member?(val)
210
+ unless val.is_a?(Symbol) && %i{gzip xz none}.member?(val)
211
211
  raise InvalidValue.new(:compression_type, "be a Symbol (:gzip, :xz, or :none)")
212
212
  end
213
213
 
@@ -261,7 +261,7 @@ module Omnibus
261
261
  @compression_strategy
262
262
  else
263
263
  unless val.is_a?(Symbol) &&
264
- [:filtered, :huffman, :rle, :fixed, :extreme].member?(val)
264
+ %i{filtered huffman rle fixed extreme}.member?(val)
265
265
  raise InvalidValue.new(:compression_strategy, "be a Symbol (:filtered, "\
266
266
  ":huffman, :rle, :fixed, or :extreme)")
267
267
  end
@@ -320,8 +320,7 @@ module Omnibus
320
320
  conflicts: project.conflicts,
321
321
  replaces: project.replaces,
322
322
  dependencies: project.runtime_dependencies,
323
- }
324
- )
323
+ })
325
324
  end
326
325
 
327
326
  #
@@ -336,8 +335,7 @@ module Omnibus
336
335
  destination: File.join(debian_dir, "conffiles"),
337
336
  variables: {
338
337
  config_files: project.config_files,
339
- }
340
- )
338
+ })
341
339
  end
342
340
 
343
341
  #
@@ -380,8 +378,7 @@ module Omnibus
380
378
  destination: File.join(debian_dir, "md5sums"),
381
379
  variables: {
382
380
  md5sums: hash,
383
- }
384
- )
381
+ })
385
382
  end
386
383
 
387
384
  #
@@ -421,7 +418,7 @@ module Omnibus
421
418
  #
422
419
  # @return [void]
423
420
  def sign_deb_file
424
- if !signing_passphrase
421
+ unless signing_passphrase
425
422
  log.info(log_key) { "Signing not enabled for .deb file" }
426
423
  return
427
424
  end
@@ -447,7 +444,7 @@ module Omnibus
447
444
  # Create signature (as +root+)
448
445
  gpg_command = "#{gpg} --armor --sign --detach-sign"
449
446
  gpg_command << " --local-user '#{project.maintainer}'"
450
- gpg_command << " --homedir #{ENV['HOME']}/.gnupg" # TODO: Make this configurable
447
+ gpg_command << " --homedir #{ENV["HOME"]}/.gnupg" # TODO: Make this configurable
451
448
  ## pass the +signing_passphrase+ via +STDIN+
452
449
  gpg_command << " --batch --no-tty"
453
450
  ## Check `gpg` for the compatibility/need of pinentry-mode