ruby_gpg2 0.11.0.pre.4 → 0.11.0.pre.5

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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +9 -7
  3. data/lib/ruby_gpg2/colon_output.rb +3 -3
  4. data/lib/ruby_gpg2/colon_record.rb +3 -3
  5. data/lib/ruby_gpg2/commands/base.rb +91 -23
  6. data/lib/ruby_gpg2/commands/decrypt.rb +2 -2
  7. data/lib/ruby_gpg2/commands/encrypt.rb +2 -2
  8. data/lib/ruby_gpg2/commands/export.rb +3 -3
  9. data/lib/ruby_gpg2/commands/export_secret_keys.rb +3 -3
  10. data/lib/ruby_gpg2/commands/generate_key.rb +3 -5
  11. data/lib/ruby_gpg2/commands/import.rb +3 -5
  12. data/lib/ruby_gpg2/commands/list_public_keys.rb +2 -4
  13. data/lib/ruby_gpg2/commands/list_secret_keys.rb +2 -4
  14. data/lib/ruby_gpg2/commands/mixins/armor_config.rb +5 -3
  15. data/lib/ruby_gpg2/commands/mixins/batch_config.rb +10 -3
  16. data/lib/ruby_gpg2/commands/mixins/colon_config.rb +10 -3
  17. data/lib/ruby_gpg2/commands/mixins/global_config.rb +11 -4
  18. data/lib/ruby_gpg2/commands/mixins/input_config.rb +5 -3
  19. data/lib/ruby_gpg2/commands/mixins/output_config.rb +5 -3
  20. data/lib/ruby_gpg2/commands/mixins/passphrase_config.rb +5 -3
  21. data/lib/ruby_gpg2/commands/mixins/pinentry_config.rb +5 -3
  22. data/lib/ruby_gpg2/commands/mixins/recipient_config.rb +5 -3
  23. data/lib/ruby_gpg2/commands/mixins/status_config.rb +5 -3
  24. data/lib/ruby_gpg2/commands/mixins/trust_mode_config.rb +5 -3
  25. data/lib/ruby_gpg2/commands/mixins/with_captured_output.rb +14 -11
  26. data/lib/ruby_gpg2/commands/mixins/with_captured_status.rb +22 -15
  27. data/lib/ruby_gpg2/commands/mixins/without_passphrase.rb +5 -5
  28. data/lib/ruby_gpg2/commands/result.rb +1 -1
  29. data/lib/ruby_gpg2/status_line.rb +1 -1
  30. data/lib/ruby_gpg2/version.rb +1 -1
  31. data/lib/ruby_gpg2.rb +1 -1
  32. data/ruby_gpg2.gemspec +2 -2
  33. metadata +8 -9
  34. data/lib/ruby_gpg2/commands/mixins/with_result.rb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c86c5357eeff869c26b47c01341a7cf432f5a383bc27dbf40af5a5c97eb7c20
4
- data.tar.gz: c0b5636e3d2d19d65a9fdc1fb291eea7c89fd9f8700c964c0238157ec24f65fc
3
+ metadata.gz: c27de5d22cf3041ceb816286e96aacfa9bb9d645c8d17dad6f8320f316cc668b
4
+ data.tar.gz: 34240663967448aa6405be530bef5b64cddf649a1782bcaeab5a96666bf54032
5
5
  SHA512:
6
- metadata.gz: b182a0ecfbd09de22bcb191be8f45d6ecc0e28e86203e330adc1579da92fb39a24f80ebb1148583de0b553f8679c119d5558730bb94cca5316eee24680d66452
7
- data.tar.gz: 448f7acbb26554b6dd1360fa68fa872cd4b18351a51611f6ad2d013757fb41103a354dae096fac65e61c9be5c78f56b1e591938dea4833f67191c3587fc861e7
6
+ metadata.gz: 882dcf36deceef20058a336045cbab36d47780d968ef7a35cdf03233e97b5e7e300050aa87be6a4ec251185721688a6887e38cc03fecebebcebf1d1a88010a77
7
+ data.tar.gz: 26df8353e6c0df19f0cedd7e4793eaa4977fc9e54bdb0ae9b2037f3cb2798a12ec226f8c49d7d2934340dc34f0a49fc7b14f6c3579372d470883d6317dc4c11d
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby_gpg2 (0.11.0.pre.4)
5
- lino (~> 3.0)
4
+ ruby_gpg2 (0.11.0.pre.5)
5
+ lino (= 3.2.0.pre.10)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -22,6 +22,7 @@ GEM
22
22
  ast (2.4.2)
23
23
  base64 (0.1.1)
24
24
  bigdecimal (3.1.4)
25
+ childprocess (5.0.0)
25
26
  colored2 (3.1.2)
26
27
  concurrent-ruby (1.2.2)
27
28
  connection_pool (2.4.1)
@@ -44,9 +45,10 @@ GEM
44
45
  i18n (1.14.1)
45
46
  concurrent-ruby (~> 1.0)
46
47
  immutable-struct (2.4.1)
47
- json (2.6.3)
48
+ json (2.7.1)
48
49
  language_server-protocol (3.17.0.3)
49
- lino (3.1.0)
50
+ lino (3.2.0.pre.10)
51
+ childprocess (~> 5.0.0)
50
52
  hamster (~> 3.0)
51
53
  open4 (~> 1.3)
52
54
  minitest (5.20.0)
@@ -93,7 +95,7 @@ GEM
93
95
  rake_factory (~> 0.23)
94
96
  sshkey (~> 2.0)
95
97
  rchardet (1.8.0)
96
- regexp_parser (2.8.2)
98
+ regexp_parser (2.8.3)
97
99
  rexml (3.2.6)
98
100
  rspec (3.12.0)
99
101
  rspec-core (~> 3.12.0)
@@ -108,7 +110,7 @@ GEM
108
110
  diff-lcs (>= 1.2.0, < 2.0)
109
111
  rspec-support (~> 3.12.0)
110
112
  rspec-support (3.12.1)
111
- rubocop (1.57.2)
113
+ rubocop (1.59.0)
112
114
  json (~> 2.3)
113
115
  language_server-protocol (>= 3.17.0)
114
116
  parallel (~> 1.10)
@@ -116,7 +118,7 @@ GEM
116
118
  rainbow (>= 2.2.2, < 4.0)
117
119
  regexp_parser (>= 1.8, < 3.0)
118
120
  rexml (>= 3.2.5, < 4.0)
119
- rubocop-ast (>= 1.28.1, < 2.0)
121
+ rubocop-ast (>= 1.30.0, < 2.0)
120
122
  ruby-progressbar (~> 1.7)
121
123
  unicode-display_width (>= 2.4.0, < 3.0)
122
124
  rubocop-ast (1.30.0)
@@ -97,7 +97,7 @@ module RubyGPG2
97
97
  # rubocop:disable Metrics/MethodLength
98
98
  def make_key(type, key_record, fingerprint, user_ids)
99
99
  Key.new(
100
- type: type,
100
+ type:,
101
101
  validity: key_record.validity,
102
102
  length: key_record.key_length,
103
103
  algorithm: key_record.key_algorithm,
@@ -108,8 +108,8 @@ module RubyGPG2
108
108
  serial_number: key_record.serial_number,
109
109
  compliance_modes: key_record.compliance_modes,
110
110
  origin: key_record.origin,
111
- fingerprint: fingerprint,
112
- user_ids: user_ids
111
+ fingerprint:,
112
+ user_ids:
113
113
  )
114
114
  end
115
115
  # rubocop:enable Metrics/MethodLength
@@ -5,7 +5,7 @@ require 'date'
5
5
  module RubyGPG2
6
6
  # rubocop:disable Metrics/ClassLength
7
7
  class ColonRecord
8
- USER_ID_REGEX = /^(.*?) (?:\((.*)\) )?<(.*)>$/.freeze
8
+ USER_ID_REGEX = /^(.*?) (?:\((.*)\) )?<(.*)>$/
9
9
 
10
10
  TYPES = {
11
11
  'pub' => :public_key,
@@ -225,7 +225,7 @@ module RubyGPG2
225
225
  def make_standard_record(record, type, fields)
226
226
  new(
227
227
  raw: record,
228
- type: type,
228
+ type:,
229
229
  validity: validity(fields[1]),
230
230
  key_length: key_length(fields[2]),
231
231
  key_algorithm: key_algorithm(fields[3]),
@@ -252,7 +252,7 @@ module RubyGPG2
252
252
  def make_trust_base_record(record, type, fields)
253
253
  new(
254
254
  raw: record,
255
- type: type,
255
+ type:,
256
256
  trust_model: trust_model(fields[2]),
257
257
  creation_date: creation_date(fields[3]),
258
258
  expiration_date: expiration_date(fields[4]),
@@ -1,51 +1,119 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'lino'
4
+ require 'tempfile'
4
5
 
5
6
  require_relative 'result'
6
7
 
7
8
  module RubyGPG2
8
9
  module Commands
9
10
  class Base
10
- def initialize(binary: nil, stdin: nil, stdout: nil, stderr: nil)
11
- @binary = binary || RubyGPG2.configuration.binary
12
- @stdin = stdin || RubyGPG2.configuration.stdin
13
- @stdout = stdout || RubyGPG2.configuration.stdout
14
- @stderr = stderr || RubyGPG2.configuration.stderr
15
- end
16
-
17
- def execute(opts = {})
18
- do_before(opts)
19
- do_around(opts) do |updated_opts|
20
- builder = configure_command(instantiate_builder, updated_opts)
21
- builder
22
- .build
23
- .execute(stdin: stdin, stdout: stdout, stderr: stderr)
11
+ def initialize(opts = {})
12
+ @binary = opts[:binary] || RubyGPG2.configuration.binary
13
+ @stdin = opts[:stdin] || RubyGPG2.configuration.stdin
14
+ @stdout = opts[:stdout] || RubyGPG2.configuration.stdout
15
+ @stderr = opts[:stderr] || RubyGPG2.configuration.stderr
16
+ end
17
+
18
+ def execute(parameters = {}, invocation_options = {})
19
+ parameters = resolve_parameters(parameters)
20
+ invocation_options = resolve_invocation_options(invocation_options)
21
+
22
+ do_before(parameters, invocation_options)
23
+ result = do_around(parameters, invocation_options) do |p, io|
24
+ build_and_execute_command(p, io)
24
25
  end
25
- do_after(opts)
26
+ result = do_after(result, parameters, invocation_options)
27
+ prepare_result(result, parameters, invocation_options)
26
28
  end
27
29
 
28
- protected
30
+ private
29
31
 
30
32
  attr_reader :binary, :stdin, :stdout, :stderr
31
33
 
34
+ def do_before(parameters, invocation_options); end
35
+
36
+ def do_around(parameters, invocation_options)
37
+ yield parameters, invocation_options
38
+ end
39
+
40
+ def do_after(result, _parameters, _invocation_options)
41
+ result
42
+ end
43
+
44
+ def build_and_execute_command(parameters, invocation_options)
45
+ command = configure_command(instantiate_builder, parameters).build
46
+ stdout = resolve_stdout(invocation_options)
47
+ stderr = resolve_stderr(invocation_options)
48
+
49
+ command.execute(stdin:, stdout:, stderr:)
50
+
51
+ process_streams(invocation_options, stdout, stderr)
52
+ end
53
+
32
54
  def instantiate_builder
33
55
  Lino::CommandLineBuilder
34
56
  .for_command(binary)
35
57
  end
36
58
 
37
- def do_before(_); end
38
-
39
- def configure_command(builder, _opts)
59
+ def configure_command(builder, _parameters)
40
60
  builder
41
61
  end
42
62
 
43
- def do_around(opts)
44
- yield opts
63
+ def process_result(result, _parameters, _invocation_options)
64
+ result
65
+ end
66
+
67
+ def parameter_defaults(_parameters)
68
+ {}
69
+ end
70
+
71
+ def parameter_overrides(_parameters)
72
+ {}
45
73
  end
46
74
 
47
- def do_after(_)
48
- Result.new
75
+ def invocation_option_defaults(_invocation_options)
76
+ { capture: [], result: :processed }
77
+ end
78
+
79
+ def resolve_parameters(parameters)
80
+ parameter_defaults(parameters)
81
+ .merge(parameters)
82
+ .merge(parameter_overrides(parameters))
83
+ end
84
+
85
+ def resolve_invocation_options(invocation_options)
86
+ invocation_option_defaults(invocation_options)
87
+ .merge(invocation_options)
88
+ end
89
+
90
+ def resolve_stdout(invocation_options)
91
+ invocation_options[:capture].include?(:stdout) ? Tempfile.new : @stdout
92
+ end
93
+
94
+ def resolve_stderr(invocation_options)
95
+ invocation_options[:capture].include?(:stderr) ? Tempfile.new : @stderr
96
+ end
97
+
98
+ def process_streams(invocation_options, stdout, stderr)
99
+ cap = invocation_options[:capture]
100
+ result = Result.new
101
+ add_contents_to_result(cap, result, :stdout, stdout, :output)
102
+ add_contents_to_result(cap, result, :stderr, stderr, :error)
103
+ result
104
+ end
105
+
106
+ def add_contents_to_result(capture, result, stream_name, stream, type)
107
+ return unless capture.include?(stream_name)
108
+
109
+ stream.rewind
110
+ result.send("#{type}=", stream.read)
111
+ end
112
+
113
+ def prepare_result(result, parameters, invocation_options)
114
+ return result if invocation_options[:result] == :raw
115
+
116
+ process_result(result, parameters, invocation_options)
49
117
  end
50
118
  end
51
119
  end
@@ -24,8 +24,8 @@ module RubyGPG2
24
24
  include Mixins::PinentryConfig
25
25
  include Mixins::WithoutPassphrase
26
26
 
27
- def configure_command(builder, opts)
28
- builder = super(builder, opts)
27
+ def configure_command(builder, parameters)
28
+ builder = super(builder, parameters)
29
29
  builder.with_subcommand('--decrypt')
30
30
  end
31
31
  end
@@ -22,8 +22,8 @@ module RubyGPG2
22
22
  include Mixins::RecipientConfig
23
23
  include Mixins::TrustModeConfig
24
24
 
25
- def configure_command(builder, opts)
26
- builder = super(builder, opts)
25
+ def configure_command(builder, parameters)
26
+ builder = super(builder, parameters)
27
27
  builder.with_subcommand('--encrypt')
28
28
  end
29
29
  end
@@ -14,10 +14,10 @@ module RubyGPG2
14
14
  include Mixins::ArmorConfig
15
15
  include Mixins::OutputConfig
16
16
 
17
- def configure_command(builder, opts)
18
- names = opts[:names] || []
17
+ def configure_command(builder, parameters)
18
+ names = parameters[:names] || []
19
19
 
20
- builder = super(builder, opts)
20
+ builder = super(builder, parameters)
21
21
  builder = builder.with_subcommand('--export')
22
22
  names.each do |name|
23
23
  builder = builder.with_argument(name)
@@ -22,10 +22,10 @@ module RubyGPG2
22
22
  include Mixins::OutputConfig
23
23
  include Mixins::WithoutPassphrase
24
24
 
25
- def configure_command(builder, opts)
26
- names = opts[:names] || []
25
+ def configure_command(builder, parameters)
26
+ names = parameters[:names] || []
27
27
 
28
- builder = super(builder, opts)
28
+ builder = super(builder, parameters)
29
29
  builder = builder.with_subcommand('--export-secret-keys')
30
30
  names.each do |name|
31
31
  builder = builder.with_argument(name)
@@ -8,7 +8,6 @@ require_relative 'mixins/batch_config'
8
8
  require_relative 'mixins/passphrase_config'
9
9
  require_relative 'mixins/pinentry_config'
10
10
  require_relative 'mixins/status_config'
11
- require_relative 'mixins/with_result'
12
11
  require_relative 'mixins/with_captured_status'
13
12
  require_relative 'mixins/without_passphrase'
14
13
 
@@ -20,15 +19,14 @@ module RubyGPG2
20
19
  include Mixins::PassphraseConfig
21
20
  include Mixins::PinentryConfig
22
21
  include Mixins::StatusConfig
23
- include Mixins::WithResult
24
22
  include Mixins::WithCapturedStatus
25
23
  include Mixins::WithoutPassphrase
26
24
 
27
- def configure_command(builder, opts)
28
- parameter_file_path = opts[:parameter_file_path]
25
+ def configure_command(builder, parameters)
26
+ parameter_file_path = parameters[:parameter_file_path]
29
27
 
30
28
  builder = builder.with_subcommand('--generate-key')
31
- builder = super(builder, opts)
29
+ builder = super(builder, parameters)
32
30
  if parameter_file_path
33
31
  builder = builder.with_argument(parameter_file_path)
34
32
  end
@@ -6,7 +6,6 @@ require_relative 'base'
6
6
  require_relative 'mixins/global_config'
7
7
  require_relative 'mixins/batch_config'
8
8
  require_relative 'mixins/status_config'
9
- require_relative 'mixins/with_result'
10
9
  require_relative 'mixins/with_captured_status'
11
10
 
12
11
  module RubyGPG2
@@ -15,13 +14,12 @@ module RubyGPG2
15
14
  include Mixins::GlobalConfig
16
15
  include Mixins::BatchConfig
17
16
  include Mixins::StatusConfig
18
- include Mixins::WithResult
19
17
  include Mixins::WithCapturedStatus
20
18
 
21
- def configure_command(builder, opts)
22
- key_file_paths = opts[:key_file_paths] || []
19
+ def configure_command(builder, parameters)
20
+ key_file_paths = parameters[:key_file_paths] || []
23
21
 
24
- builder = super(builder, opts)
22
+ builder = super(builder, parameters)
25
23
  builder = builder.with_subcommand('--import')
26
24
  key_file_paths.each do |key_file_path|
27
25
  builder = builder.with_argument(key_file_path)
@@ -5,7 +5,6 @@ require 'lino'
5
5
  require_relative 'base'
6
6
  require_relative 'mixins/global_config'
7
7
  require_relative 'mixins/colon_config'
8
- require_relative 'mixins/with_result'
9
8
  require_relative 'mixins/with_captured_output'
10
9
 
11
10
  module RubyGPG2
@@ -13,12 +12,11 @@ module RubyGPG2
13
12
  class ListPublicKeys < Base
14
13
  include Mixins::GlobalConfig
15
14
  include Mixins::ColonConfig
16
- include Mixins::WithResult
17
15
  include Mixins::WithCapturedOutput
18
16
 
19
- def configure_command(builder, opts)
17
+ def configure_command(builder, parameters)
20
18
  builder = builder.with_subcommand('--list-public-keys')
21
- super(builder, opts)
19
+ super(builder, parameters)
22
20
  end
23
21
  end
24
22
  end
@@ -5,7 +5,6 @@ require 'lino'
5
5
  require_relative 'base'
6
6
  require_relative 'mixins/global_config'
7
7
  require_relative 'mixins/colon_config'
8
- require_relative 'mixins/with_result'
9
8
  require_relative 'mixins/with_captured_output'
10
9
 
11
10
  module RubyGPG2
@@ -13,12 +12,11 @@ module RubyGPG2
13
12
  class ListSecretKeys < Base
14
13
  include Mixins::GlobalConfig
15
14
  include Mixins::ColonConfig
16
- include Mixins::WithResult
17
15
  include Mixins::WithCapturedOutput
18
16
 
19
- def configure_command(builder, opts)
17
+ def configure_command(builder, parameters)
20
18
  builder = builder.with_subcommand('--list-secret-keys')
21
- super(builder, opts)
19
+ super(builder, parameters)
22
20
  end
23
21
  end
24
22
  end
@@ -4,10 +4,12 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module ArmorConfig
7
- def configure_command(builder, opts)
8
- armor = opts[:armor]
7
+ private
9
8
 
10
- builder = super(builder, opts)
9
+ def configure_command(builder, parameters)
10
+ armor = parameters[:armor]
11
+
12
+ builder = super(builder, parameters)
11
13
  builder = builder.with_flag('--armor') if armor
12
14
  builder
13
15
  end
@@ -4,10 +4,17 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module BatchConfig
7
- def configure_command(builder, opts)
8
- batch = opts[:batch].nil? ? true : opts[:batch]
7
+ private
9
8
 
10
- builder = super(builder, opts)
9
+ def parameter_defaults(parameters)
10
+ batch = parameters[:batch]
11
+ super.merge(batch: batch.nil? ? true : batch)
12
+ end
13
+
14
+ def configure_command(builder, parameters)
15
+ batch = parameters[:batch]
16
+
17
+ builder = super(builder, parameters)
11
18
  builder = builder.with_flag('--batch') if batch
12
19
  builder
13
20
  end
@@ -4,10 +4,17 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module ColonConfig
7
- def configure_command(builder, opts)
8
- with_colons = opts[:with_colons].nil? ? true : opts[:with_colons]
7
+ private
9
8
 
10
- builder = super(builder, opts)
9
+ def parameter_defaults(parameters)
10
+ with_colons = parameters[:with_colons]
11
+ super.merge(with_colons: with_colons.nil? ? true : with_colons)
12
+ end
13
+
14
+ def configure_command(builder, parameters)
15
+ with_colons = parameters[:with_colons]
16
+
17
+ builder = super(builder, parameters)
11
18
  builder = builder.with_flag('--with-colons') if with_colons
12
19
  builder
13
20
  end
@@ -4,11 +4,18 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module GlobalConfig
7
- def configure_command(builder, opts)
8
- home_directory = opts[:home_directory]
9
- without_tty = opts[:without_tty].nil? ? true : opts[:without_tty]
7
+ private
10
8
 
11
- builder = super(builder, opts)
9
+ def parameter_defaults(parameters)
10
+ without_tty = parameters[:without_tty]
11
+ super.merge(without_tty: without_tty.nil? ? true : without_tty)
12
+ end
13
+
14
+ def configure_command(builder, parameters)
15
+ home_directory = parameters[:home_directory]
16
+ without_tty = parameters[:without_tty]
17
+
18
+ builder = super(builder, parameters)
12
19
  if home_directory
13
20
  builder = builder.with_option(
14
21
  '--homedir', home_directory, quoting: '"'
@@ -4,10 +4,12 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module InputConfig
7
- def configure_command(builder, opts)
8
- input_file_path = opts[:input_file_path]
7
+ private
9
8
 
10
- builder = super(builder, opts)
9
+ def configure_command(builder, parameters)
10
+ input_file_path = parameters[:input_file_path]
11
+
12
+ builder = super(builder, parameters)
11
13
  builder = builder.with_argument(input_file_path) if input_file_path
12
14
  builder
13
15
  end
@@ -4,10 +4,12 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module OutputConfig
7
- def configure_command(builder, opts)
8
- output_file_path = opts[:output_file_path]
7
+ private
9
8
 
10
- builder = super(builder, opts)
9
+ def configure_command(builder, parameters)
10
+ output_file_path = parameters[:output_file_path]
11
+
12
+ builder = super(builder, parameters)
11
13
  if output_file_path
12
14
  builder = builder.with_option(
13
15
  '--output', output_file_path, quoting: '"'
@@ -4,10 +4,12 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module PassphraseConfig
7
- def configure_command(builder, opts)
8
- passphrase = opts[:passphrase]
7
+ private
9
8
 
10
- builder = super(builder, opts)
9
+ def configure_command(builder, parameters)
10
+ passphrase = parameters[:passphrase]
11
+
12
+ builder = super(builder, parameters)
11
13
  if passphrase
12
14
  builder = builder.with_option(
13
15
  '--passphrase', passphrase, quoting: '"'
@@ -4,10 +4,12 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module PinentryConfig
7
- def configure_command(builder, opts)
8
- pinentry_mode = opts[:pinentry_mode]
7
+ private
9
8
 
10
- builder = super(builder, opts)
9
+ def configure_command(builder, parameters)
10
+ pinentry_mode = parameters[:pinentry_mode]
11
+
12
+ builder = super(builder, parameters)
11
13
  if pinentry_mode
12
14
  builder = builder.with_option(
13
15
  '--pinentry-mode', pinentry_mode
@@ -4,10 +4,12 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module RecipientConfig
7
- def configure_command(builder, opts)
8
- recipient = opts[:recipient]
7
+ private
9
8
 
10
- builder = super(builder, opts)
9
+ def configure_command(builder, parameters)
10
+ recipient = parameters[:recipient]
11
+
12
+ builder = super(builder, parameters)
11
13
  if recipient
12
14
  builder = builder.with_option(
13
15
  '--recipient', recipient
@@ -4,10 +4,12 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module StatusConfig
7
- def configure_command(builder, opts)
8
- status_file = opts[:status_file]
7
+ private
9
8
 
10
- builder = super(builder, opts)
9
+ def configure_command(builder, parameters)
10
+ status_file = parameters[:status_file]
11
+
12
+ builder = super(builder, parameters)
11
13
  if status_file
12
14
  builder = builder.with_option(
13
15
  '--status-file', status_file, quoting: '"'
@@ -4,10 +4,12 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module TrustModeConfig
7
- def configure_command(builder, opts)
8
- trust_mode = opts[:trust_mode]
7
+ private
9
8
 
10
- builder = super(builder, opts)
9
+ def configure_command(builder, parameters)
10
+ trust_mode = parameters[:trust_mode]
11
+
12
+ builder = super(builder, parameters)
11
13
  if trust_mode
12
14
  builder = builder.with_option(
13
15
  '--trust-mode', trust_mode
@@ -6,21 +6,24 @@ module RubyGPG2
6
6
  module Commands
7
7
  module Mixins
8
8
  module WithCapturedOutput
9
- def initialize(*args)
10
- super(*args)
11
- @stdout = StringIO.new unless
12
- defined?(@stdout) && @stdout.respond_to?(:string)
13
- end
9
+ private
14
10
 
15
- def do_after(opts)
16
- super(opts.merge(output: resolve_output(stdout.string, opts)))
11
+ def parameter_defaults(parameters)
12
+ parse_output = parameters[:parse_output]
13
+ super.merge(parse_output: parse_output.nil? ? true : parse_output)
17
14
  end
18
15
 
19
- private
16
+ def invocation_option_defaults(_invocation_options)
17
+ super.merge(capture: [:stdout])
18
+ end
20
19
 
21
- def resolve_output(output, opts)
22
- parse_output = opts[:parse_output].nil? ? true : opts[:parse_output]
23
- parse_output ? ColonOutput.parse(output) : output
20
+ def process_result(result, parameters, invocation_options)
21
+ result = super(result, parameters, invocation_options)
22
+ if parameters[:parse_output]
23
+ result.output =
24
+ ColonOutput.parse(result.output)
25
+ end
26
+ result
24
27
  end
25
28
  end
26
29
  end
@@ -8,30 +8,37 @@ module RubyGPG2
8
8
  module Commands
9
9
  module Mixins
10
10
  module WithCapturedStatus
11
- def do_around(opts)
12
- if opts[:with_status]
13
- Tempfile.create('status-file', opts[:work_directory]) do |f|
14
- yield opts.merge(status_file: f.path)
11
+ private
12
+
13
+ # rubocop:disable Metrics/MethodLength
14
+ def do_around(parameters, invocation_options)
15
+ if parameters[:with_status]
16
+ Tempfile.create('status-file', parameters[:work_directory]) do |f|
17
+ result = yield(
18
+ parameters.merge(status_file: f.path), invocation_options
19
+ )
15
20
  @status = File.read(f.path)
21
+ result
16
22
  end
17
23
  else
18
- yield opts
24
+ yield parameters, invocation_options
19
25
  end
20
26
  end
27
+ # rubocop:enable Metrics/MethodLength
21
28
 
22
- def do_after(opts)
23
- if opts[:with_status]
24
- super(opts.merge(status: resolve_status(@status, opts)))
25
- else
26
- super(opts)
27
- end
29
+ def status(parameters)
30
+ parameters[:parse_status] ? StatusOutput.parse(@status) : @status
28
31
  end
29
32
 
30
- private
33
+ def parameter_defaults(parameters)
34
+ parse_status = parameters[:parse_status]
35
+ super.merge(parse_status: parse_status.nil? ? true : parse_status)
36
+ end
31
37
 
32
- def resolve_status(status, opts)
33
- parse_status = opts[:parse_status].nil? ? true : opts[:parse_status]
34
- parse_status ? StatusOutput.parse(status) : status
38
+ def process_result(result, parameters, invocation_options)
39
+ result = super(result, parameters, invocation_options)
40
+ result.status = status(parameters) if parameters[:with_status]
41
+ result
35
42
  end
36
43
  end
37
44
  end
@@ -4,13 +4,13 @@ module RubyGPG2
4
4
  module Commands
5
5
  module Mixins
6
6
  module WithoutPassphrase
7
- def configure_command(builder, opts)
8
- without_passphrase = opts[:without_passphrase]
7
+ def configure_command(builder, parameters)
8
+ without_passphrase = parameters[:without_passphrase]
9
9
  if without_passphrase
10
- opts = opts.merge(passphrase: '',
11
- pinentry_mode: :loopback)
10
+ parameters = parameters.merge(passphrase: '',
11
+ pinentry_mode: :loopback)
12
12
  end
13
- super(builder, opts)
13
+ super(builder, parameters)
14
14
  end
15
15
  end
16
16
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RubyGPG2
4
4
  module Commands
5
- Result = Struct.new(:output, :status)
5
+ Result = Struct.new(:output, :error, :status)
6
6
  end
7
7
  end
@@ -4,7 +4,7 @@ require_relative 'status_lines'
4
4
 
5
5
  module RubyGPG2
6
6
  class StatusLine
7
- TYPE_REGEX = /^\[GNUPG:\] (.*?)(\s|$)/.freeze
7
+ TYPE_REGEX = /^\[GNUPG:\] (.*?)(\s|$)/
8
8
 
9
9
  TYPES = {
10
10
  'IMPORT_OK' => StatusLines::ImportOK,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyGPG2
4
- VERSION = '0.11.0.pre.4'
4
+ VERSION = '0.11.0.pre.5'
5
5
  end
data/lib/ruby_gpg2.rb CHANGED
@@ -71,7 +71,7 @@ module RubyGPG2
71
71
 
72
72
  def initialize
73
73
  @binary = 'gpg'
74
- @stdin = ''
74
+ @stdin = nil
75
75
  @stdout = $stdout
76
76
  @stderr = $stderr
77
77
  end
data/ruby_gpg2.gemspec CHANGED
@@ -34,9 +34,9 @@ Gem::Specification.new do |spec|
34
34
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
35
35
  spec.require_paths = ['lib']
36
36
 
37
- spec.required_ruby_version = '>= 2.7'
37
+ spec.required_ruby_version = '>= 3.1'
38
38
 
39
- spec.add_dependency 'lino', '~> 3.0'
39
+ spec.add_dependency 'lino', '3.2.0.pre.10'
40
40
 
41
41
  spec.add_development_dependency 'bundler'
42
42
  spec.add_development_dependency 'gem-release'
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_gpg2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0.pre.4
4
+ version: 0.11.0.pre.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - InfraBlocks Maintainers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-06 00:00:00.000000000 Z
11
+ date: 2024-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lino
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
19
+ version: 3.2.0.pre.10
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: '3.0'
26
+ version: 3.2.0.pre.10
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -262,7 +262,6 @@ files:
262
262
  - lib/ruby_gpg2/commands/mixins/trust_mode_config.rb
263
263
  - lib/ruby_gpg2/commands/mixins/with_captured_output.rb
264
264
  - lib/ruby_gpg2/commands/mixins/with_captured_status.rb
265
- - lib/ruby_gpg2/commands/mixins/with_result.rb
266
265
  - lib/ruby_gpg2/commands/mixins/without_passphrase.rb
267
266
  - lib/ruby_gpg2/commands/result.rb
268
267
  - lib/ruby_gpg2/key.rb
@@ -292,14 +291,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
292
291
  requirements:
293
292
  - - ">="
294
293
  - !ruby/object:Gem::Version
295
- version: '2.7'
294
+ version: '3.1'
296
295
  required_rubygems_version: !ruby/object:Gem::Requirement
297
296
  requirements:
298
297
  - - ">"
299
298
  - !ruby/object:Gem::Version
300
299
  version: 1.3.1
301
300
  requirements: []
302
- rubygems_version: 3.1.6
301
+ rubygems_version: 3.3.7
303
302
  signing_key:
304
303
  specification_version: 4
305
304
  summary: A simple Ruby wrapper for invoking gpg (>= 2.0) commands.
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'stringio'
4
-
5
- module RubyGPG2
6
- module Commands
7
- module Mixins
8
- module WithResult
9
- def do_after(opts)
10
- result = super(opts)
11
- result.output = opts[:output] if opts[:output]
12
- result.status = opts[:status] if opts[:status]
13
- result
14
- end
15
- end
16
- end
17
- end
18
- end