ruby_gpg2 0.1.0.pre.1 → 0.1.0.pre.2
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/ruby_gpg2/commands/base.rb +55 -0
- data/lib/ruby_gpg2/commands/generate_key.rb +21 -0
- data/lib/ruby_gpg2/commands/mixins/global_config.rb +18 -0
- data/lib/ruby_gpg2/commands.rb +7 -0
- data/lib/ruby_gpg2/parameter_file.rb +72 -0
- data/lib/ruby_gpg2/version.rb +1 -1
- data/lib/ruby_gpg2.rb +25 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4f00d4cf2494de2e8cdeb3103bf4dc8537db7f150e97971e2e20053a5e026f9
|
4
|
+
data.tar.gz: 6f2dab623e1ab6337c341df8e40d2f686119e03b52b29f2a1437d9cb9a05ab1f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24f3299eb68ec2e9c48d992dd4590e4d1c7a00d576b9992f2cf2714c7060067fc12f213067aafce492cad41e68d2d8d7dd8becd86e09c455953ec90646423f09
|
7
|
+
data.tar.gz: 465d3bf9bee8cca7bf4049cd823775b45499451ad012c510c3dcb1f7df09af651a177b79015869c833f339fce60927041f08eda4b37f43f15fdb3d88b5e233f4
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'lino'
|
2
|
+
|
3
|
+
module RubyGPG2
|
4
|
+
module Commands
|
5
|
+
class Base
|
6
|
+
attr_reader :binary
|
7
|
+
|
8
|
+
def initialize(binary: nil)
|
9
|
+
@binary = binary || RubyGPG2.configuration.binary
|
10
|
+
end
|
11
|
+
|
12
|
+
def stdin
|
13
|
+
''
|
14
|
+
end
|
15
|
+
|
16
|
+
def stdout
|
17
|
+
STDOUT
|
18
|
+
end
|
19
|
+
|
20
|
+
def stderr
|
21
|
+
STDERR
|
22
|
+
end
|
23
|
+
|
24
|
+
def execute(opts = {})
|
25
|
+
builder = instantiate_builder
|
26
|
+
|
27
|
+
do_before(opts)
|
28
|
+
builder = configure_command(builder, opts)
|
29
|
+
builder
|
30
|
+
.build
|
31
|
+
.execute(
|
32
|
+
stdin: stdin,
|
33
|
+
stdout: stdout,
|
34
|
+
stderr: stderr)
|
35
|
+
do_after(opts)
|
36
|
+
end
|
37
|
+
|
38
|
+
def instantiate_builder
|
39
|
+
Lino::CommandLineBuilder
|
40
|
+
.for_command(binary)
|
41
|
+
.with_option_separator('=')
|
42
|
+
end
|
43
|
+
|
44
|
+
def do_before(opts)
|
45
|
+
end
|
46
|
+
|
47
|
+
def configure_command(builder, opts)
|
48
|
+
builder
|
49
|
+
end
|
50
|
+
|
51
|
+
def do_after(opts)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'lino'
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
require_relative 'mixins/global_config'
|
5
|
+
|
6
|
+
module RubyGPG2
|
7
|
+
module Commands
|
8
|
+
class GenerateKey < Base
|
9
|
+
include Mixins::GlobalConfig
|
10
|
+
|
11
|
+
def configure_command(builder, opts)
|
12
|
+
parameter_file_path = opts[:parameter_file_path]
|
13
|
+
|
14
|
+
builder = builder.with_subcommand('--generate-key')
|
15
|
+
builder = super(builder, opts)
|
16
|
+
builder = builder.with_argument(parameter_file_path) if parameter_file_path
|
17
|
+
builder
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module RubyGPG2
|
2
|
+
module Commands
|
3
|
+
module Mixins
|
4
|
+
module GlobalConfig
|
5
|
+
def configure_command(builder, opts)
|
6
|
+
batch = opts[:batch].nil? ? true : opts[:batch]
|
7
|
+
home_directory = opts[:home_directory]
|
8
|
+
|
9
|
+
builder = super(builder, opts)
|
10
|
+
builder = builder.with_flag('--batch') if batch
|
11
|
+
builder = builder.with_option(
|
12
|
+
'--homedir', home_directory, quoting: '"') if home_directory
|
13
|
+
builder
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
module RubyGPG2
|
2
|
+
class ParameterFile
|
3
|
+
attr_reader(
|
4
|
+
:key_type,
|
5
|
+
:key_length,
|
6
|
+
:subkey_type,
|
7
|
+
:subkey_length,
|
8
|
+
:owner_name,
|
9
|
+
:owner_email,
|
10
|
+
:owner_comment,
|
11
|
+
:expiry,
|
12
|
+
:passphrase)
|
13
|
+
|
14
|
+
def initialize(opts)
|
15
|
+
@key_type = opts.fetch(:key_type, 'RSA')
|
16
|
+
@key_length = opts.fetch(:key_length,
|
17
|
+
(@key_type.to_s == 'default' ? nil : 2048))
|
18
|
+
@subkey_type = opts.fetch(:subkey_type, 'RSA')
|
19
|
+
@subkey_length = opts.fetch(:subkey_length,
|
20
|
+
((@subkey_type.nil? || @subkey_type.to_s == 'default') ? nil : 2048))
|
21
|
+
@owner_name = opts.fetch(:owner_name, nil)
|
22
|
+
@owner_email = opts.fetch(:owner_email, nil)
|
23
|
+
@owner_comment = opts.fetch(:owner_comment, nil)
|
24
|
+
@expiry = opts.fetch(:expiry, :never)
|
25
|
+
@passphrase = opts.fetch(:passphrase, nil)
|
26
|
+
|
27
|
+
owner_name_present = !@owner_name.nil?
|
28
|
+
owner_email_present = !@owner_email.nil?
|
29
|
+
missing_count = [
|
30
|
+
owner_name_present,
|
31
|
+
owner_email_present
|
32
|
+
].count(false)
|
33
|
+
missing_names = [
|
34
|
+
owner_name_present ? nil : :owner_name,
|
35
|
+
owner_email_present ? nil : :owner_email
|
36
|
+
].compact
|
37
|
+
|
38
|
+
unless missing_count == 0
|
39
|
+
raise RuntimeError.new(
|
40
|
+
"Missing required parameter#{missing_count > 1 ? 's' : ''}: " +
|
41
|
+
"#{missing_names}.")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def write_to(path)
|
46
|
+
File.open(path, 'w') do |f|
|
47
|
+
f.write(to_s)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def to_s
|
52
|
+
[
|
53
|
+
parm("Key-Type", key_type),
|
54
|
+
parm("Key-Length", key_length),
|
55
|
+
parm("Subkey-Type", subkey_type),
|
56
|
+
parm('Subkey-Length', subkey_length),
|
57
|
+
parm('Name-Real', owner_name),
|
58
|
+
parm('Name-Comment', owner_comment),
|
59
|
+
parm('Name-Email', owner_email),
|
60
|
+
parm('Expire-Date',
|
61
|
+
expiry == :never ? 0 : expiry),
|
62
|
+
parm('Passphrase', passphrase),
|
63
|
+
].compact.join("\n") + "\n"
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def parm(name, value)
|
69
|
+
value ? "#{name}: #{value}" : nil
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
data/lib/ruby_gpg2/version.rb
CHANGED
data/lib/ruby_gpg2.rb
CHANGED
@@ -1,4 +1,29 @@
|
|
1
1
|
require 'ruby_gpg2/version'
|
2
|
+
require 'ruby_gpg2/commands'
|
3
|
+
require 'ruby_gpg2/parameter_file'
|
2
4
|
|
3
5
|
module RubyGPG2
|
6
|
+
class << self
|
7
|
+
attr_writer :configuration
|
8
|
+
|
9
|
+
def configuration
|
10
|
+
@configuration ||= Configuration.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def configure
|
14
|
+
yield(configuration)
|
15
|
+
end
|
16
|
+
|
17
|
+
def reset!
|
18
|
+
@configuration = nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Configuration
|
23
|
+
attr_accessor :binary
|
24
|
+
|
25
|
+
def initialize
|
26
|
+
@binary = 'gpg'
|
27
|
+
end
|
28
|
+
end
|
4
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_gpg2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.pre.
|
4
|
+
version: 0.1.0.pre.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toby Clemson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lino
|
@@ -159,6 +159,11 @@ files:
|
|
159
159
|
- config/secrets/rubygems/credentials
|
160
160
|
- go
|
161
161
|
- lib/ruby_gpg2.rb
|
162
|
+
- lib/ruby_gpg2/commands.rb
|
163
|
+
- lib/ruby_gpg2/commands/base.rb
|
164
|
+
- lib/ruby_gpg2/commands/generate_key.rb
|
165
|
+
- lib/ruby_gpg2/commands/mixins/global_config.rb
|
166
|
+
- lib/ruby_gpg2/parameter_file.rb
|
162
167
|
- lib/ruby_gpg2/version.rb
|
163
168
|
- ruby_gpg2.gemspec
|
164
169
|
- scripts/ci/common/configure-git.sh
|