omnibus 6.1.7 → 6.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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