sym 3.0.0 → 3.0.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/.envrc +1 -1
- data/.github/workflows/rubocop.yml +30 -0
- data/.github/workflows/ruby.yml +30 -0
- data/.rubocop.yml +18 -2
- data/.rubocop_todo.yml +143 -0
- data/CHANGELOG.md +33 -6
- data/README.adoc +15 -7
- data/README.pdf +32877 -18
- data/exe/keychain +2 -2
- data/exe/sym +3 -3
- data/lib/ruby_warnings.rb +1 -1
- data/lib/sym/app/cli.rb +3 -5
- data/lib/sym/app/cli_slop.rb +9 -10
- data/lib/sym/app/commands/base_command.rb +1 -0
- data/lib/sym/app/commands/bash_completion.rb +1 -1
- data/lib/sym/app/commands/keychain_add_key.rb +1 -1
- data/lib/sym/app/commands/open_editor.rb +3 -3
- data/lib/sym/app/commands/show_examples.rb +6 -6
- data/lib/sym/app/input/handler.rb +2 -2
- data/lib/sym/app/keychain.rb +1 -1
- data/lib/sym/app/output/base.rb +1 -1
- data/lib/sym/app/output/file.rb +1 -1
- data/lib/sym/app/password/providers.rb +1 -3
- data/lib/sym/app/private_key/key_source_check.rb +3 -4
- data/lib/sym/app.rb +8 -9
- data/lib/sym/application.rb +4 -4
- data/lib/sym/configuration.rb +1 -5
- data/lib/sym/constants.rb +1 -1
- data/lib/sym/data.rb +2 -2
- data/lib/sym/extensions/instance_methods.rb +5 -5
- data/lib/sym/extensions/stdlib.rb +2 -2
- data/lib/sym/version.rb +1 -1
- data/sym.gemspec +5 -2
- metadata +42 -10
- data/.circleci/config.yml +0 -60
data/exe/keychain
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
lib_path = File.expand_path(File.dirname(__FILE__)
|
3
|
+
lib_path = File.expand_path("#{File.dirname(__FILE__)}/../lib")
|
4
4
|
$LOAD_PATH << lib_path if File.exist?(lib_path) && !$LOAD_PATH.include?(lib_path)
|
5
5
|
|
6
6
|
require 'sym'
|
@@ -9,7 +9,7 @@ require 'sym/app/keychain'
|
|
9
9
|
require 'colored2'
|
10
10
|
|
11
11
|
def usage
|
12
|
-
puts
|
12
|
+
puts "Usage: #{'keychain'.bold.blue}#{' name [ add <contents> | find | delete ]'.bold.green}"
|
13
13
|
exit 0
|
14
14
|
end
|
15
15
|
|
data/exe/sym
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
require_relative '../lib/ruby_warnings'
|
5
5
|
|
6
|
-
lib_path = File.expand_path(File.dirname(__FILE__)
|
6
|
+
lib_path = File.expand_path("#{File.dirname(__FILE__)}/../lib")
|
7
7
|
$LOAD_PATH << lib_path if File.exist?(lib_path) && !$LOAD_PATH.include?(lib_path)
|
8
8
|
|
9
9
|
require 'sym'
|
@@ -13,9 +13,9 @@ require 'sym/app'
|
|
13
13
|
begin
|
14
14
|
exit ::Sym::App::CLI.new(ARGV.dup).execute
|
15
15
|
rescue Interrupt => e
|
16
|
-
|
16
|
+
$stderr.flush
|
17
17
|
warn "Interrupt, #{e.message}, exiting."
|
18
|
-
|
18
|
+
$stderr.flush
|
19
19
|
exit 1
|
20
20
|
end
|
21
21
|
|
data/lib/ruby_warnings.rb
CHANGED
data/lib/sym/app/cli.rb
CHANGED
@@ -58,7 +58,7 @@ module Sym
|
|
58
58
|
|
59
59
|
attr_accessor :opts, :application, :outputs, :stdin, :stdout, :stderr, :kernel, :args
|
60
60
|
|
61
|
-
def initialize(argv, stdin =
|
61
|
+
def initialize(argv, stdin = $stdin, stdout = $stdout, stderr = $stderr, kernel = nil)
|
62
62
|
self.args = argv
|
63
63
|
self.stdin = stdin
|
64
64
|
self.stdout = stdout
|
@@ -79,15 +79,13 @@ module Sym
|
|
79
79
|
end
|
80
80
|
|
81
81
|
# Deal with SYM_ARGS and -A
|
82
|
-
if opts[:sym_args]
|
83
|
-
if non_empty_array?(sym_args)
|
82
|
+
if opts[:sym_args] && non_empty_array?(sym_args)
|
84
83
|
args << sym_args
|
85
84
|
args.flatten!
|
86
85
|
args.compact!
|
87
86
|
args.delete('-A')
|
88
87
|
args.delete('--sym-args')
|
89
88
|
self.opts = parse(args)
|
90
|
-
end
|
91
89
|
end
|
92
90
|
|
93
91
|
# Disable coloring if requested, or if piping STDOUT
|
@@ -99,7 +97,7 @@ module Sym
|
|
99
97
|
rescue StandardError => e
|
100
98
|
log :error, "#{e.message}" if opts
|
101
99
|
error exception: e
|
102
|
-
quit!(127) if stdin ==
|
100
|
+
quit!(127) if stdin == $stdin
|
103
101
|
end
|
104
102
|
|
105
103
|
self.application = ::Sym::Application.new(self.opts, stdin, stdout, stderr, kernel)
|
data/lib/sym/app/cli_slop.rb
CHANGED
@@ -19,7 +19,7 @@ module Sym
|
|
19
19
|
o.separator ' 5) use -i to paste/type the key interactively'.dark
|
20
20
|
o.separator ' 6) default key file (if present) at '.dark + Sym.default_key_file.magenta.bold
|
21
21
|
o.separator ' '
|
22
|
-
o.separator
|
22
|
+
o.separator " #{key_spec}#{' = -k/--key [ key | file | keychain | env variable name ]'.green.bold}"
|
23
23
|
o.separator ' -i/--interactive'.green.bold
|
24
24
|
o.separator ''
|
25
25
|
o.separator ' Encrypt/Decrypt from STDIN/file/args, to STDOUT/file:'.dark
|
@@ -48,7 +48,7 @@ module Sym
|
|
48
48
|
o.separator 'Modes:'.yellow
|
49
49
|
o.bool '-e', '--encrypt', ' encrypt mode'
|
50
50
|
o.bool '-d', '--decrypt', ' decrypt mode'
|
51
|
-
o.string '-t', '--edit', '[file] '.blue
|
51
|
+
o.string '-t', '--edit', "#{'[file] '.blue} edit encrypted file in an $EDITOR", default: nil
|
52
52
|
o.string '-n', '--negate', '[file] '.blue + " encrypts any regular #{'file'.green} into #{'file.enc'.green}" + "\n" +
|
53
53
|
" conversely decrypts #{'file.enc'.green} into #{'file'.green}."
|
54
54
|
o.separator ' '
|
@@ -57,25 +57,25 @@ module Sym
|
|
57
57
|
o.bool '-p', '--password', ' encrypt the key with a password'
|
58
58
|
|
59
59
|
if Sym::App.osx?
|
60
|
-
o.string '-x', '--keychain', '[key-name] '.blue
|
60
|
+
o.string '-x', '--keychain', "#{'[key-name] '.blue}write the key to OS-X Keychain"
|
61
61
|
end
|
62
62
|
|
63
63
|
o.separator ' '
|
64
64
|
o.separator 'Read existing private key from:'.yellow
|
65
|
-
o.string '-k', '--key', '[key-spec]'.blue
|
65
|
+
o.string '-k', '--key', "#{'[key-spec]'.blue} private key, key file, or keychain"
|
66
66
|
o.bool '-i', '--interactive', ' Paste or type the key interactively'
|
67
67
|
|
68
68
|
o.separator ' '
|
69
69
|
o.separator 'Password Cache:'.yellow
|
70
70
|
o.bool '-c', '--cache-passwords', ' enable password cache'
|
71
|
-
o.integer '-z', '--cache-timeout', '[seconds]'.blue
|
71
|
+
o.integer '-z', '--cache-timeout', "#{'[seconds]'.blue} expire passwords after"
|
72
72
|
o.string '-r', '--cache-provider', '[provider]'.blue + ' cache provider, one of ' + "#{Sym::App::Password::Providers.provider_list}"
|
73
73
|
|
74
74
|
o.separator ' '
|
75
75
|
o.separator 'Data to Encrypt/Decrypt:'.yellow
|
76
|
-
o.string '-s', '--string', '[string]'.blue
|
77
|
-
o.string '-f', '--file', '[file] '.blue
|
78
|
-
o.string '-o', '--output', '[file] '.blue
|
76
|
+
o.string '-s', '--string', "#{'[string]'.blue} specify a string to encrypt/decrypt"
|
77
|
+
o.string '-f', '--file', "#{'[file] '.blue} filename to read from"
|
78
|
+
o.string '-o', '--output', "#{'[file] '.blue} filename to write to"
|
79
79
|
|
80
80
|
o.separator ' '
|
81
81
|
o.separator 'Flags:'.yellow
|
@@ -95,8 +95,7 @@ module Sym
|
|
95
95
|
" user home available, you may need to force set user's home to any existing\n" +
|
96
96
|
" directory using the #{'--user-home'.bold.blue} flag.\n"
|
97
97
|
|
98
|
-
o.string '-B', '--bash-support', '[file]'.blue
|
99
|
-
' such as ~/.bash_profile or ~/.bashrc'
|
98
|
+
o.string '-B', '--bash-support', "#{'[file]'.blue} append bash completion & utils to a file\n such as ~/.bash_profile or ~/.bashrc"
|
100
99
|
o.string '-u', '--user-home', '[DIR]'.blue + " Overrides #{'${HOME}'.green} ==> supports AWS Lambda\n"
|
101
100
|
|
102
101
|
o.separator ' '
|
@@ -13,7 +13,7 @@ module Sym
|
|
13
13
|
|
14
14
|
def execute
|
15
15
|
if Sym.default_key? && Sym.default_key == self.key
|
16
|
-
raise
|
16
|
+
raise "Refusing to import key specified in the default key file #{Sym.default_key_file.italic}"
|
17
17
|
end
|
18
18
|
raise Sym::Errors::NoPrivateKeyFound.new("Unable to resolve private key from argument '#{opts[:key]}'") if self.key.nil?
|
19
19
|
add_to_keychain_if_needed(self.key)
|
@@ -62,12 +62,12 @@ module Sym
|
|
62
62
|
|
63
63
|
diff = compute_diff
|
64
64
|
|
65
|
-
File.
|
65
|
+
File.write(opts[:file], encr(content_edited, key))
|
66
66
|
|
67
67
|
out = ''
|
68
68
|
if opts[:verbose]
|
69
|
-
out << "Saved encrypted/compressed content to #{opts[:file].bold.blue}" +
|
70
|
-
" (#{File.size(opts[:file]) / 1024}Kb), unencrypted size #{content.length / 1024}Kb."
|
69
|
+
out << ("Saved encrypted/compressed content to #{opts[:file].bold.blue}" +
|
70
|
+
" (#{File.size(opts[:file]) / 1024}Kb), unencrypted size #{content.length / 1024}Kb.")
|
71
71
|
out << (opts[:backup] ? ",\nbacked up the last version to #{backup_file.bold.blue}." : '.')
|
72
72
|
end
|
73
73
|
out << "\n\nDiff:\n#{diff}"
|
@@ -16,12 +16,12 @@ module Sym
|
|
16
16
|
result: '75ngenJpB6zL47/8Wo7Ne6JN1pnOsqNEcIqblItpfg4='.green)
|
17
17
|
|
18
18
|
output << example(comment: 'generate a new key with a cached password & save to the default key file',
|
19
|
-
command:
|
20
|
-
echo:
|
21
|
-
result:
|
19
|
+
command: "sym -gcpqo #{Sym.default_key_file}",
|
20
|
+
echo: "New Password : #{'••••••••••'.green}",
|
21
|
+
result: "Confirm Password : #{'••••••••••'.green}")
|
22
22
|
|
23
23
|
output << example(comment: 'encrypt a plain text string with default key file, and immediately decrypt it',
|
24
|
-
command:
|
24
|
+
command: "sym -es #{'"secret string"'.bold.yellow} | sym -d",
|
25
25
|
result: 'secret string'.green)
|
26
26
|
|
27
27
|
output << example(comment: 'encrypt secrets file using key in the environment, and --negate option:',
|
@@ -35,7 +35,7 @@ module Sym
|
|
35
35
|
result: 'secret string'.green)
|
36
36
|
|
37
37
|
output << example(comment: 'encrypt/decrypt sym.yml using the default key file',
|
38
|
-
command:
|
38
|
+
command: "sym -gcq > #{Sym.default_key_file}",
|
39
39
|
echo: 'sym -n secrets.yml',
|
40
40
|
result: 'sym -df secrets.yml.enc',
|
41
41
|
)
|
@@ -76,7 +76,7 @@ Diff:
|
|
76
76
|
out << command if command
|
77
77
|
out << echo if echo
|
78
78
|
out << result if result
|
79
|
-
out << '—'*80
|
79
|
+
out << ('—'*80)
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
@@ -6,7 +6,7 @@ module Sym
|
|
6
6
|
class Handler
|
7
7
|
attr_accessor :stdin, :stdout, :stderr, :kernel
|
8
8
|
|
9
|
-
def initialize(stdin =
|
9
|
+
def initialize(stdin = $stdin, stdout = $stdout, stderr = $stderr, kernel = nil)
|
10
10
|
self.stdin = stdin
|
11
11
|
self.stdout = stdout
|
12
12
|
self.stderr = stderr
|
@@ -27,7 +27,7 @@ module Sym
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def prompt(message, color)
|
30
|
-
unless
|
30
|
+
unless $stdin.isatty && $stdin.tty?
|
31
31
|
raise Sym::Errors::CantReadPasswordNoTTY.new('key requires a password, however STDIN is not a TTY')
|
32
32
|
end
|
33
33
|
highline(message, color)
|
data/lib/sym/app/keychain.rb
CHANGED
data/lib/sym/app/output/base.rb
CHANGED
@@ -6,7 +6,7 @@ module Sym
|
|
6
6
|
|
7
7
|
attr_accessor :opts, :stdin, :stdout, :stderr, :kernel
|
8
8
|
|
9
|
-
def initialize(opts, stdin =
|
9
|
+
def initialize(opts, stdin = $stdin, stdout = $stdout, stderr = $stderr, kernel = nil)
|
10
10
|
self.opts = opts
|
11
11
|
self.stdin = stdin
|
12
12
|
self.stdout = stdout
|
data/lib/sym/app/output/file.rb
CHANGED
@@ -16,9 +16,8 @@ module Sym
|
|
16
16
|
attr_accessor :name, :reducted, :input, :output
|
17
17
|
|
18
18
|
def initialize(name:,
|
19
|
-
reducted: false,
|
20
|
-
input: ->(detector) { detector.opts[:key] }
|
21
|
-
output:)
|
19
|
+
output:, reducted: false,
|
20
|
+
input: ->(detector) { detector.opts[:key] })
|
22
21
|
|
23
22
|
self.name = name
|
24
23
|
self.reducted = reducted
|
@@ -70,7 +69,7 @@ module Sym
|
|
70
69
|
|
71
70
|
KeySourceCheck.new(
|
72
71
|
name: :env,
|
73
|
-
output: ->(*, value) {
|
72
|
+
output: ->(*, value) { value =~ /^[a-zA-Z0-9_]+$/ ? ENV[value] : nil }
|
74
73
|
),
|
75
74
|
|
76
75
|
KeySourceCheck.new(
|
data/lib/sym/app.rb
CHANGED
@@ -16,15 +16,14 @@ module Sym
|
|
16
16
|
#
|
17
17
|
module App
|
18
18
|
class << self
|
19
|
-
attr_accessor :exit_code
|
20
|
-
attr_accessor :stdin, :stdout, :stderr
|
19
|
+
attr_accessor :exit_code, :stdin, :stdout, :stderr
|
21
20
|
end
|
22
21
|
|
23
22
|
self.exit_code = 0
|
24
23
|
|
25
|
-
self.stdin =
|
26
|
-
self.stdout =
|
27
|
-
self.stderr =
|
24
|
+
self.stdin = $stdin
|
25
|
+
self.stdout = $stdout
|
26
|
+
self.stderr = $stderr
|
28
27
|
|
29
28
|
def self.out
|
30
29
|
self.stderr
|
@@ -44,18 +43,18 @@ module Sym
|
|
44
43
|
|
45
44
|
lines = []
|
46
45
|
|
47
|
-
error_type = "#{
|
46
|
+
error_type = "#{type || exception.class.name}"
|
48
47
|
error_details = (details || exception.message)
|
49
48
|
|
50
49
|
operation = command ? "to #{command.class.short_name.to_s.humanize.downcase}" : ''
|
51
50
|
reason = exception.message if exception
|
52
51
|
|
53
|
-
if exception && (config && config[:trace] || reason == 'Unknown Error')
|
54
|
-
lines << "#{error_type.bold.red}:\n#{error_details.red.italic}\n" + ''.normal
|
52
|
+
if exception && ((config && config[:trace]) || reason == 'Unknown Error')
|
53
|
+
lines << ("#{error_type.bold.red}:\n#{error_details.red.italic}\n" + ''.normal)
|
55
54
|
lines << exception.backtrace.join("\n").red.bold if config[:trace]
|
56
55
|
lines << "\n"
|
57
56
|
else
|
58
|
-
lines << " ✖ Sym Error #{operation}:".bold.red
|
57
|
+
lines << "#{" ✖ Sym Error #{operation}:".bold.red}#{(reason ? " #{reason} ".red.italic: " #{error_details}")[0..70]}#{' '.normal}\n"
|
59
58
|
lines << "#{comments}" if comments
|
60
59
|
end
|
61
60
|
|
data/lib/sym/application.rb
CHANGED
@@ -31,7 +31,7 @@ module Sym
|
|
31
31
|
:password_cache,
|
32
32
|
:stdin, :stdout, :stderr, :kernel
|
33
33
|
|
34
|
-
def initialize(opts, stdin =
|
34
|
+
def initialize(opts, stdin = $stdin, stdout = $stdout, stderr = $stderr, kernel = nil)
|
35
35
|
self.stdin = stdin
|
36
36
|
self.stdout = stdout
|
37
37
|
self.stderr = stderr
|
@@ -141,7 +141,7 @@ module Sym
|
|
141
141
|
|
142
142
|
def editors_to_try
|
143
143
|
[
|
144
|
-
ENV
|
144
|
+
ENV.fetch('EDITOR', nil),
|
145
145
|
'/usr/bin/vim',
|
146
146
|
'/usr/local/bin/vim',
|
147
147
|
'/bin/vim',
|
@@ -224,9 +224,9 @@ module Sym
|
|
224
224
|
detect_key_source
|
225
225
|
if args.require_key? && !self.key
|
226
226
|
log :error, 'Unable to determine the key, which appears to be required with current args'
|
227
|
-
raise Sym::Errors::NoPrivateKeyFound,
|
227
|
+
raise Sym::Errors::NoPrivateKeyFound, "Private key is required when #{self.action ? "#{self.action.to_s}ypting" : provided_flags.join(', ')}"
|
228
228
|
end
|
229
|
-
log :debug, "initialize_key_source: detected key ends with [...#{(key ? key[-5
|
229
|
+
log :debug, "initialize_key_source: detected key ends with [...#{(key ? key[-5..] : 'nil').bold.magenta}]"
|
230
230
|
log :debug, "opts: #{self.provided_value_options.to_s.green.bold}"
|
231
231
|
log :debug, "flags: #{self.provided_flags.to_s.green.bold}"
|
232
232
|
end
|
data/lib/sym/configuration.rb
CHANGED
@@ -35,10 +35,6 @@ module Sym
|
|
35
35
|
|
36
36
|
# See file +lib/sym.rb+ where these values are defined.
|
37
37
|
|
38
|
-
attr_accessor :data_cipher, :password_cipher, :private_key_cipher
|
39
|
-
attr_accessor :compression_enabled, :compression_level
|
40
|
-
attr_accessor :password_cache_default_provider, :password_cache_timeout
|
41
|
-
attr_accessor :password_cache_arguments
|
42
|
-
attr_accessor :default_key_file, :encrypted_file_extension
|
38
|
+
attr_accessor :data_cipher, :password_cipher, :private_key_cipher, :compression_enabled, :compression_level, :password_cache_default_provider, :password_cache_timeout, :password_cache_arguments, :default_key_file, :encrypted_file_extension
|
43
39
|
end
|
44
40
|
end
|
data/lib/sym/constants.rb
CHANGED
data/lib/sym/data.rb
CHANGED
@@ -11,11 +11,11 @@ module Sym
|
|
11
11
|
# the result of `Marshal.dump(data)` using Zlib, and then doing `#urlsafe_encode64` encoding
|
12
12
|
# to convert it to a string,
|
13
13
|
module Data
|
14
|
-
def encode(data, compress
|
14
|
+
def encode(data, compress: true)
|
15
15
|
Encoder.new(data, compress).data_encoded
|
16
16
|
end
|
17
17
|
|
18
|
-
def decode(data_encoded, compress
|
18
|
+
def decode(data_encoded, compress: nil)
|
19
19
|
Decoder.new(data_encoded, compress).data
|
20
20
|
end
|
21
21
|
end
|
@@ -72,7 +72,7 @@ module Sym
|
|
72
72
|
key_len = cipher.key_len
|
73
73
|
salt ||= OpenSSL::Random.random_bytes 16
|
74
74
|
iter = 20_000
|
75
|
-
digest = OpenSSL::Digest
|
75
|
+
digest = OpenSSL::Digest.new('SHA256')
|
76
76
|
key = OpenSSL::PKCS5.pbkdf2_hmac(password, salt, iter, key_len, digest)
|
77
77
|
return key, salt
|
78
78
|
end
|
@@ -85,15 +85,15 @@ module Sym
|
|
85
85
|
iv: iv)
|
86
86
|
|
87
87
|
block.call(cipher_struct) if block
|
88
|
-
|
88
|
+
|
89
89
|
encrypted_data = update_cipher(cipher_struct.cipher, data)
|
90
90
|
arguments = { encrypted_data: encrypted_data,
|
91
91
|
iv: cipher_struct.iv,
|
92
92
|
cipher_name: cipher_struct.cipher.name,
|
93
93
|
salt: cipher_struct.salt,
|
94
94
|
compress: !compression_enabled }
|
95
|
-
wrapper_struct = WrapperStruct.new(arguments)
|
96
|
-
encode(wrapper_struct, false)
|
95
|
+
wrapper_struct = WrapperStruct.new(**arguments)
|
96
|
+
encode(wrapper_struct, compress: false)
|
97
97
|
end
|
98
98
|
|
99
99
|
# Expects key to be a base64 encoded key data
|
@@ -109,7 +109,7 @@ module Sym
|
|
109
109
|
|
110
110
|
def encode_incoming_data(data)
|
111
111
|
compression_enabled = !data.respond_to?(:size) || (data.size > 100 && encryption_config.compression_enabled)
|
112
|
-
data = encode(data, compression_enabled)
|
112
|
+
data = encode(data, compress: compression_enabled)
|
113
113
|
[data, compression_enabled]
|
114
114
|
end
|
115
115
|
|
data/lib/sym/version.rb
CHANGED
data/sym.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.bindir = 'exe'
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ['lib']
|
21
|
-
spec.required_ruby_version = '>= 2.
|
21
|
+
spec.required_ruby_version = '>= 2.6'
|
22
22
|
spec.post_install_message = <<~EOF
|
23
23
|
|
24
24
|
Thank you for installing Sym!
|
@@ -60,8 +60,11 @@ Gem::Specification.new do |spec|
|
|
60
60
|
spec.add_development_dependency 'relaxed-rubocop'
|
61
61
|
spec.add_development_dependency 'rspec', '~> 3'
|
62
62
|
spec.add_development_dependency 'rspec-its'
|
63
|
-
spec.add_development_dependency 'rubocop', '0.81.0'
|
63
|
+
spec.add_development_dependency 'rubocop' # , '0.81.0'
|
64
|
+
spec.add_development_dependency 'rubocop-rspec' # , '0.81.0'
|
65
|
+
spec.add_development_dependency 'rubocop-rake' # , '0.81.0'
|
64
66
|
spec.add_development_dependency 'simplecov'
|
65
67
|
spec.add_development_dependency 'codecov'
|
66
68
|
spec.add_development_dependency 'yard'
|
69
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
67
70
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sym
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Gredeskoul
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colored2
|
@@ -196,16 +196,44 @@ dependencies:
|
|
196
196
|
name: rubocop
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
|
-
- -
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: rubocop-rspec
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
200
221
|
- !ruby/object:Gem::Version
|
201
|
-
version: 0
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: rubocop-rake
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
202
230
|
type: :development
|
203
231
|
prerelease: false
|
204
232
|
version_requirements: !ruby/object:Gem::Requirement
|
205
233
|
requirements:
|
206
|
-
- -
|
234
|
+
- - ">="
|
207
235
|
- !ruby/object:Gem::Version
|
208
|
-
version: 0
|
236
|
+
version: '0'
|
209
237
|
- !ruby/object:Gem::Dependency
|
210
238
|
name: simplecov
|
211
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -288,18 +316,21 @@ executables:
|
|
288
316
|
extensions: []
|
289
317
|
extra_rdoc_files: []
|
290
318
|
files:
|
291
|
-
- ".circleci/config.yml"
|
292
319
|
- ".document"
|
293
320
|
- ".envrc"
|
321
|
+
- ".github/workflows/rubocop.yml"
|
322
|
+
- ".github/workflows/ruby.yml"
|
294
323
|
- ".gitignore"
|
295
324
|
- ".rspec"
|
296
325
|
- ".rubocop.yml"
|
326
|
+
- ".rubocop_todo.yml"
|
297
327
|
- ".travis.yml"
|
298
328
|
- ".yardopts"
|
299
329
|
- CHANGELOG.md
|
300
330
|
- Gemfile
|
301
331
|
- LICENSE
|
302
332
|
- README.adoc
|
333
|
+
- README.pdf
|
303
334
|
- Rakefile
|
304
335
|
- SYM-CLI.md
|
305
336
|
- bin/changelog
|
@@ -373,7 +404,8 @@ files:
|
|
373
404
|
- sym.gemspec
|
374
405
|
homepage: https://github.com/kigster/sym
|
375
406
|
licenses: []
|
376
|
-
metadata:
|
407
|
+
metadata:
|
408
|
+
rubygems_mfa_required: 'true'
|
377
409
|
post_install_message: "\nThank you for installing Sym! \n\nBLOG POST\n=========\nhttp://kig.re/2017/03/10/dead-simple-encryption-with-sym.html\n\nBASH
|
378
410
|
COMPLETION\n===============\nTo enable bash command line completion and install
|
379
411
|
highly useful\ncommand line BASH wrapper 'symit', please run the following \ncommand
|
@@ -388,14 +420,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
388
420
|
requirements:
|
389
421
|
- - ">="
|
390
422
|
- !ruby/object:Gem::Version
|
391
|
-
version: '2.
|
423
|
+
version: '2.6'
|
392
424
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
393
425
|
requirements:
|
394
426
|
- - ">="
|
395
427
|
- !ruby/object:Gem::Version
|
396
428
|
version: '0'
|
397
429
|
requirements: []
|
398
|
-
rubygems_version: 3.
|
430
|
+
rubygems_version: 3.3.15
|
399
431
|
signing_key:
|
400
432
|
specification_version: 4
|
401
433
|
summary: Dead-simple and easy to use encryption library on top of OpenSSL, offering
|