secret_hub 0.2.1 → 0.2.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/bin/secrethub +3 -3
- data/lib/secret_hub/cli.rb +2 -3
- data/lib/secret_hub/commands/base.rb +1 -2
- data/lib/secret_hub/commands/bulk.rb +48 -46
- data/lib/secret_hub/commands/org.rb +29 -29
- data/lib/secret_hub/commands/repo.rb +29 -28
- data/lib/secret_hub/config.rb +15 -8
- data/lib/secret_hub/exceptions.rb +2 -2
- data/lib/secret_hub/github_client.rb +9 -10
- data/lib/secret_hub/refinements/string_obfuscation.rb +4 -4
- data/lib/secret_hub/sodium.rb +1 -1
- data/lib/secret_hub/version.rb +2 -2
- data/lib/secret_hub.rb +0 -2
- metadata +69 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6395f8f799ffb59615d0c926519b74bc6c924c2696841a16f847f14e1750988c
|
4
|
+
data.tar.gz: 57a8dd0b5de09ea6ff62084a269e882a57a8197736e87a8caeeeed236ecb2817
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 385b7a968fbb014cfa1166e69dfa7c189af538d98e87f9df9ceaf07bd41f64137ae503732a2b25939edb71c9ee44cba811d5df2fe0ec53bcad7c557ed07d4049
|
7
|
+
data.tar.gz: 28994ec833f8cc308823e300922f28c132b184a7fe105d24c84f0c7e29a41a70525fe109d49ba9600c38427d02b03bc4b84d3e33a7bbda6c8d425649241ee377
|
data/bin/secrethub
CHANGED
@@ -8,12 +8,12 @@ router = SecretHub::CLI.router
|
|
8
8
|
|
9
9
|
begin
|
10
10
|
exit router.run ARGV
|
11
|
-
rescue Interrupt
|
11
|
+
rescue Interrupt
|
12
12
|
say "\nGoodbye"
|
13
13
|
exit 1
|
14
14
|
rescue => e
|
15
15
|
puts e.backtrace.reverse if ENV['DEBUG']
|
16
|
-
say! "
|
16
|
+
say! "rib` #{e.class}`"
|
17
17
|
say! e.message
|
18
18
|
exit 1
|
19
|
-
end
|
19
|
+
end
|
data/lib/secret_hub/cli.rb
CHANGED
@@ -8,8 +8,8 @@ module SecretHub
|
|
8
8
|
class CLI
|
9
9
|
def self.router
|
10
10
|
router = MisterBin::Runner.new version: VERSION,
|
11
|
-
header:
|
12
|
-
footer:
|
11
|
+
header: 'GitHub Secret Manager',
|
12
|
+
footer: 'Run m`secrethub COMMAND --help` for command specific help'
|
13
13
|
|
14
14
|
router.route 'repo', to: Commands::Repo
|
15
15
|
router.route 'org', to: Commands::Org
|
@@ -18,5 +18,4 @@ module SecretHub
|
|
18
18
|
router
|
19
19
|
end
|
20
20
|
end
|
21
|
-
|
22
21
|
end
|
@@ -6,45 +6,46 @@ module SecretHub
|
|
6
6
|
class Bulk < Base
|
7
7
|
using StringObfuscation
|
8
8
|
|
9
|
-
summary
|
10
|
-
|
11
|
-
usage
|
12
|
-
usage
|
13
|
-
usage
|
14
|
-
usage
|
15
|
-
usage
|
16
|
-
usage
|
17
|
-
|
18
|
-
command
|
19
|
-
command
|
20
|
-
command
|
21
|
-
command
|
22
|
-
command
|
23
|
-
|
24
|
-
option
|
25
|
-
option
|
26
|
-
option
|
27
|
-
option
|
28
|
-
|
29
|
-
param
|
30
|
-
|
31
|
-
example
|
32
|
-
example
|
33
|
-
example
|
34
|
-
example
|
35
|
-
example
|
36
|
-
example
|
37
|
-
example
|
9
|
+
summary 'Manage multiple secrets in multiple repositories'
|
10
|
+
|
11
|
+
usage 'secrethub bulk init [CONFIG]'
|
12
|
+
usage 'secrethub bulk show [CONFIG --visible]'
|
13
|
+
usage 'secrethub bulk list [CONFIG]'
|
14
|
+
usage 'secrethub bulk save [CONFIG --clean --dry --only REPO]'
|
15
|
+
usage 'secrethub bulk clean [CONFIG --dry]'
|
16
|
+
usage 'secrethub bulk (-h|--help)'
|
17
|
+
|
18
|
+
command 'init', 'Create a sample configuration file in the current directory'
|
19
|
+
command 'show', 'Show the configuration file'
|
20
|
+
command 'save', 'Save multiple secrets to multiple repositories'
|
21
|
+
command 'clean', 'Delete secrets from multiple repositories unless they are specified in the config file'
|
22
|
+
command 'list', 'Show all secrets in all repositories'
|
23
|
+
|
24
|
+
option '-c, --clean', 'Also delete any other secret not defined in the configuration file'
|
25
|
+
option '-v, --visible', 'Also show secret values'
|
26
|
+
option '-d, --dry', 'Dry run'
|
27
|
+
option '-o, --only REPO', 'Save all secrets to a single repository from the configuration file'
|
28
|
+
|
29
|
+
param 'CONFIG', 'Path to the configuration file [default: secrethub.yml]'
|
30
|
+
|
31
|
+
example 'secrethub bulk init'
|
32
|
+
example 'secrethub bulk show --visible'
|
33
|
+
example 'secrethub bulk clean'
|
34
|
+
example 'secrethub bulk list mysecrets.yml'
|
35
|
+
example 'secrethub bulk save mysecrets.yml --dry'
|
36
|
+
example 'secrethub bulk save --clean'
|
37
|
+
example 'secrethub bulk save --only me/my-important-repo'
|
38
38
|
|
39
39
|
def init_command
|
40
40
|
raise SecretHubError, "File #{config_file} already exists" if File.exist? config_file
|
41
|
+
|
41
42
|
FileUtils.cp config_template, config_file
|
42
|
-
say "
|
43
|
+
say "Saved g`#{config_file}`"
|
43
44
|
end
|
44
45
|
|
45
46
|
def show_command
|
46
47
|
config.each do |repo, secrets|
|
47
|
-
say "
|
48
|
+
say "b`#{repo}`:"
|
48
49
|
secrets.each do |key, value|
|
49
50
|
show_secret key, value, args['--visible']
|
50
51
|
end
|
@@ -53,9 +54,9 @@ module SecretHub
|
|
53
54
|
|
54
55
|
def list_command
|
55
56
|
config.each_repo do |repo|
|
56
|
-
say "
|
57
|
+
say "b`#{repo}`:"
|
57
58
|
github.secrets(repo).each do |secret|
|
58
|
-
say "-
|
59
|
+
say "- m`#{secret}`"
|
59
60
|
end
|
60
61
|
end
|
61
62
|
end
|
@@ -66,22 +67,23 @@ module SecretHub
|
|
66
67
|
skipped = 0
|
67
68
|
|
68
69
|
config.each do |repo, secrets|
|
69
|
-
next if only
|
70
|
-
|
70
|
+
next if only && (repo != only)
|
71
|
+
|
72
|
+
say "b`#{repo}`"
|
71
73
|
skipped += update_repo repo, secrets, dry
|
72
74
|
clean_repo repo, secrets.keys, dry if args['--clean']
|
73
75
|
end
|
74
76
|
|
75
|
-
puts "\n" if skipped
|
76
|
-
say "Skipped #{skipped} missing secrets" if skipped
|
77
|
-
say
|
77
|
+
puts "\n" if skipped.positive? || dry
|
78
|
+
say "Skipped #{skipped} missing secrets" if skipped.positive?
|
79
|
+
say 'Dry run, nothing happened' if dry
|
78
80
|
end
|
79
81
|
|
80
82
|
def clean_command
|
81
83
|
dry = args['--dry']
|
82
84
|
|
83
85
|
config.each do |repo, secrets|
|
84
|
-
say "
|
86
|
+
say "b`#{repo}`"
|
85
87
|
clean_repo repo, secrets.keys, dry
|
86
88
|
end
|
87
89
|
|
@@ -95,9 +97,9 @@ module SecretHub
|
|
95
97
|
delete_candidates = repo_keys - keys
|
96
98
|
|
97
99
|
delete_candidates.each do |key|
|
98
|
-
say "delete
|
100
|
+
say "delete m`#{key}` "
|
99
101
|
github.delete_secret repo, key unless dry
|
100
|
-
say
|
102
|
+
say 'g`OK`'
|
101
103
|
end
|
102
104
|
end
|
103
105
|
|
@@ -105,12 +107,12 @@ module SecretHub
|
|
105
107
|
skipped = 0
|
106
108
|
|
107
109
|
secrets.each do |key, value|
|
108
|
-
say "save
|
110
|
+
say "save m`#{key}` "
|
109
111
|
if value
|
110
112
|
github.put_secret repo, key, value unless dry
|
111
|
-
say
|
113
|
+
say 'g`OK`'
|
112
114
|
else
|
113
|
-
say
|
115
|
+
say 'r`MISSING`'
|
114
116
|
skipped += 1
|
115
117
|
end
|
116
118
|
end
|
@@ -121,9 +123,9 @@ module SecretHub
|
|
121
123
|
def show_secret(key, value, visible)
|
122
124
|
if value
|
123
125
|
value = value.obfuscate unless visible
|
124
|
-
say "
|
126
|
+
say " m`#{key}`: c`#{value}`"
|
125
127
|
else
|
126
|
-
say "
|
128
|
+
say " m`#{key}`: r`*MISSING*`"
|
127
129
|
end
|
128
130
|
end
|
129
131
|
|
@@ -1,41 +1,41 @@
|
|
1
1
|
module SecretHub
|
2
2
|
module Commands
|
3
3
|
class Org < Base
|
4
|
-
summary
|
5
|
-
|
6
|
-
usage
|
7
|
-
usage
|
8
|
-
usage
|
9
|
-
usage
|
10
|
-
|
11
|
-
command
|
12
|
-
command
|
13
|
-
command
|
14
|
-
|
15
|
-
param
|
16
|
-
param
|
17
|
-
param
|
18
|
-
|
19
|
-
example
|
20
|
-
example
|
21
|
-
example
|
22
|
-
example
|
4
|
+
summary 'Manage organization secrets'
|
5
|
+
|
6
|
+
usage 'secrethub org list ORG'
|
7
|
+
usage 'secrethub org save ORG KEY [VALUE]'
|
8
|
+
usage 'secrethub org delete ORG KEY'
|
9
|
+
usage 'secrethub org (-h|--help)'
|
10
|
+
|
11
|
+
command 'list', 'Show all organization secrets'
|
12
|
+
command 'save', 'Create or update an organization secret (with private repositories visibility)'
|
13
|
+
command 'delete', 'Delete an organization secret'
|
14
|
+
|
15
|
+
param 'ORG', 'Name of the organization'
|
16
|
+
param 'KEY', 'The name of the secret'
|
17
|
+
param 'VALUE', 'The plain text secret value. If not provided, it is expected to be set as an environment variable'
|
18
|
+
|
19
|
+
example 'secrethub org list myorg'
|
20
|
+
example 'secrethub org save myorg PASSWORD'
|
21
|
+
example 'secrethub org save myorg PASSWORD s3cr3t'
|
22
|
+
example 'secrethub org delete myorg PASSWORD'
|
23
23
|
|
24
24
|
def list_command
|
25
|
-
say "
|
25
|
+
say "b`#{org}`:"
|
26
26
|
github.org_secrets(org).each do |secret|
|
27
|
-
say "-
|
27
|
+
say "- m`#{secret}`"
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
def save_command
|
31
|
+
def save_command
|
32
32
|
github.put_org_secret org, key, value
|
33
|
-
say "Saved
|
33
|
+
say "Saved b`#{org}` m`#{key}`"
|
34
34
|
end
|
35
35
|
|
36
36
|
def delete_command
|
37
37
|
github.delete_org_secret org, key
|
38
|
-
say "Deleted
|
38
|
+
say "Deleted b`#{org}` m`#{key}`"
|
39
39
|
end
|
40
40
|
|
41
41
|
private
|
@@ -50,13 +50,13 @@ module SecretHub
|
|
50
50
|
|
51
51
|
def value
|
52
52
|
result = args['VALUE'] || ENV[key]
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
raise InvalidInput, "Please provide a value, either in the command line or in the environment variable '#{key}'"
|
53
|
+
unless result
|
54
|
+
raise InvalidInput,
|
55
|
+
"Please provide a value, either in the command line or in the environment variable '#{key}'"
|
57
56
|
end
|
58
|
-
end
|
59
57
|
|
58
|
+
result
|
59
|
+
end
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
@@ -1,41 +1,41 @@
|
|
1
1
|
module SecretHub
|
2
2
|
module Commands
|
3
3
|
class Repo < Base
|
4
|
-
summary
|
5
|
-
|
6
|
-
usage
|
7
|
-
usage
|
8
|
-
usage
|
9
|
-
usage
|
10
|
-
|
11
|
-
command
|
12
|
-
command
|
13
|
-
command
|
14
|
-
|
15
|
-
param
|
16
|
-
param
|
17
|
-
param
|
18
|
-
|
19
|
-
example
|
20
|
-
example
|
21
|
-
example
|
22
|
-
example
|
4
|
+
summary 'Manage repository secrets'
|
5
|
+
|
6
|
+
usage 'secrethub repo list REPO'
|
7
|
+
usage 'secrethub repo save REPO KEY [VALUE]'
|
8
|
+
usage 'secrethub repo delete REPO KEY'
|
9
|
+
usage 'secrethub repo (-h|--help)'
|
10
|
+
|
11
|
+
command 'list', 'Show all repository secrets'
|
12
|
+
command 'save', 'Create or update a repository secret'
|
13
|
+
command 'delete', 'Delete a repository secret'
|
14
|
+
|
15
|
+
param 'REPO', 'Full name of the GitHub repository (user/repo)'
|
16
|
+
param 'KEY', 'The name of the secret'
|
17
|
+
param 'VALUE', 'The plain text secret value. If not provided, it is expected to be set as an environment variable'
|
18
|
+
|
19
|
+
example 'secrethub repo list me/myrepo'
|
20
|
+
example 'secrethub repo save me/myrepo PASSWORD'
|
21
|
+
example 'secrethub repo save me/myrepo PASSWORD s3cr3t'
|
22
|
+
example 'secrethub repo delete me/myrepo PASSWORD'
|
23
23
|
|
24
24
|
def list_command
|
25
|
-
say "
|
25
|
+
say "b`#{repo}`:"
|
26
26
|
github.secrets(repo).each do |secret|
|
27
|
-
say "-
|
27
|
+
say "- m`#{secret}`"
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
def save_command
|
31
|
+
def save_command
|
32
32
|
github.put_secret repo, key, value
|
33
|
-
say "Saved
|
33
|
+
say "Saved b`#{repo}` m`#{key}`"
|
34
34
|
end
|
35
35
|
|
36
36
|
def delete_command
|
37
37
|
github.delete_secret repo, key
|
38
|
-
say "Deleted
|
38
|
+
say "Deleted b`#{repo}` m`#{key}`"
|
39
39
|
end
|
40
40
|
|
41
41
|
private
|
@@ -50,11 +50,12 @@ module SecretHub
|
|
50
50
|
|
51
51
|
def value
|
52
52
|
result = args['VALUE'] || ENV[key]
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
raise InvalidInput, "Please provide a value, either in the command line or in the environment variable '#{key}'"
|
53
|
+
unless result
|
54
|
+
raise InvalidInput,
|
55
|
+
"Please provide a value, either in the command line or in the environment variable '#{key}'"
|
57
56
|
end
|
57
|
+
|
58
|
+
result
|
58
59
|
end
|
59
60
|
end
|
60
61
|
end
|
data/lib/secret_hub/config.rb
CHANGED
@@ -6,7 +6,12 @@ module SecretHub
|
|
6
6
|
|
7
7
|
def self.load(config_file)
|
8
8
|
raise ConfigurationError, "Config file not found #{config_file}" unless File.exist? config_file
|
9
|
+
|
10
|
+
new YAML.load_file config_file, aliases: true
|
11
|
+
rescue ArgumentError
|
12
|
+
# :nocov:
|
9
13
|
new YAML.load_file config_file
|
14
|
+
# :nocov:
|
10
15
|
end
|
11
16
|
|
12
17
|
def initialize(data)
|
@@ -18,11 +23,11 @@ module SecretHub
|
|
18
23
|
end
|
19
24
|
|
20
25
|
def each(&block)
|
21
|
-
to_h.each
|
26
|
+
to_h.each(&block)
|
22
27
|
end
|
23
28
|
|
24
29
|
def each_repo(&block)
|
25
|
-
to_h.keys.each
|
30
|
+
to_h.keys.each(&block)
|
26
31
|
end
|
27
32
|
|
28
33
|
private
|
@@ -31,18 +36,20 @@ module SecretHub
|
|
31
36
|
result = {}
|
32
37
|
data.each do |repo, secrets|
|
33
38
|
next unless repo.include? '/'
|
39
|
+
|
34
40
|
result[repo] = resolve_secrets secrets
|
35
41
|
end
|
36
42
|
result
|
37
43
|
end
|
38
44
|
|
39
45
|
def resolve_secrets(secrets)
|
40
|
-
secrets
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
+
secrets ||= []
|
47
|
+
|
48
|
+
case secrets
|
49
|
+
when Hash
|
50
|
+
secrets.to_h { |key, value| [key, value || ENV[key]] }
|
51
|
+
when Array
|
52
|
+
secrets.to_h { |key| [key, ENV[key]] }
|
46
53
|
end
|
47
54
|
end
|
48
55
|
end
|
@@ -2,7 +2,7 @@ module SecretHub
|
|
2
2
|
SecretHubError = Class.new StandardError
|
3
3
|
ConfigurationError = Class.new SecretHubError
|
4
4
|
InvalidInput = Class.new SecretHubError
|
5
|
-
|
5
|
+
|
6
6
|
class APIError < SecretHubError
|
7
7
|
attr_reader :response
|
8
8
|
|
@@ -11,4 +11,4 @@ module SecretHub
|
|
11
11
|
super "[#{response.code}] #{response.body}"
|
12
12
|
end
|
13
13
|
end
|
14
|
-
end
|
14
|
+
end
|
@@ -39,8 +39,8 @@ module SecretHub
|
|
39
39
|
secret = encrypt_for repo, value
|
40
40
|
key_id = public_key(repo)['key_id']
|
41
41
|
put "/repos/#{repo}/actions/secrets/#{name}",
|
42
|
-
encrypted_value: secret,
|
43
|
-
key_id:
|
42
|
+
encrypted_value: secret,
|
43
|
+
key_id: key_id
|
44
44
|
end
|
45
45
|
|
46
46
|
# PUT /orgs/:org/actions/secrets/:secret_name
|
@@ -48,9 +48,9 @@ module SecretHub
|
|
48
48
|
secret = encrypt_for org, value
|
49
49
|
key_id = public_key(org)['key_id']
|
50
50
|
put "/orgs/#{org}/actions/secrets/#{name}",
|
51
|
-
encrypted_value: secret,
|
52
|
-
key_id:
|
53
|
-
visibility:
|
51
|
+
encrypted_value: secret,
|
52
|
+
key_id: key_id,
|
53
|
+
visibility: 'private'
|
54
54
|
end
|
55
55
|
|
56
56
|
# DELETE /repos/:owner/:repo/actions/secrets/:name
|
@@ -97,15 +97,14 @@ module SecretHub
|
|
97
97
|
end
|
98
98
|
|
99
99
|
def headers
|
100
|
-
{
|
101
|
-
|
102
|
-
|
100
|
+
{
|
101
|
+
'Authorization' => "token #{secret_token}",
|
102
|
+
'User-Agent' => 'SecretHub Gem',
|
103
103
|
}
|
104
104
|
end
|
105
105
|
|
106
106
|
def secret_token
|
107
|
-
ENV['GITHUB_ACCESS_TOKEN'] || raise(ConfigurationError,
|
107
|
+
ENV['GITHUB_ACCESS_TOKEN'] || raise(ConfigurationError, 'Please set GITHUB_ACCESS_TOKEN')
|
108
108
|
end
|
109
|
-
|
110
109
|
end
|
111
110
|
end
|
@@ -6,18 +6,18 @@ module SecretHub
|
|
6
6
|
def obfuscate
|
7
7
|
text = dup
|
8
8
|
trim = false
|
9
|
-
|
9
|
+
|
10
10
|
if text.size > 40
|
11
11
|
trim = true
|
12
12
|
text = text[0..40]
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
result = StringObfuscator.obfuscate text,
|
16
|
-
percent:
|
16
|
+
percent: 60,
|
17
17
|
min_obfuscated_length: 5
|
18
18
|
|
19
19
|
trim ? "#{result}..." : result
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
|
-
end
|
23
|
+
end
|
data/lib/secret_hub/sodium.rb
CHANGED
data/lib/secret_hub/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module SecretHub
|
2
|
-
VERSION =
|
3
|
-
end
|
2
|
+
VERSION = '0.2.2'
|
3
|
+
end
|
data/lib/secret_hub.rb
CHANGED
metadata
CHANGED
@@ -1,71 +1,91 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: secret_hub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Danny Ben Shitrit
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: colsole
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.8.1
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.8.1
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: httparty
|
15
35
|
requirement: !ruby/object:Gem::Requirement
|
16
36
|
requirements:
|
17
37
|
- - "~>"
|
18
38
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
39
|
+
version: '0.21'
|
20
40
|
type: :runtime
|
21
41
|
prerelease: false
|
22
42
|
version_requirements: !ruby/object:Gem::Requirement
|
23
43
|
requirements:
|
24
44
|
- - "~>"
|
25
45
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
46
|
+
version: '0.21'
|
27
47
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
48
|
+
name: lp
|
29
49
|
requirement: !ruby/object:Gem::Requirement
|
30
50
|
requirements:
|
31
51
|
- - "~>"
|
32
52
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
53
|
+
version: '0.2'
|
34
54
|
type: :runtime
|
35
55
|
prerelease: false
|
36
56
|
version_requirements: !ruby/object:Gem::Requirement
|
37
57
|
requirements:
|
38
58
|
- - "~>"
|
39
59
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
60
|
+
version: '0.2'
|
41
61
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
62
|
+
name: mister_bin
|
43
63
|
requirement: !ruby/object:Gem::Requirement
|
44
64
|
requirements:
|
45
65
|
- - "~>"
|
46
66
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
67
|
+
version: 0.7.3
|
48
68
|
type: :runtime
|
49
69
|
prerelease: false
|
50
70
|
version_requirements: !ruby/object:Gem::Requirement
|
51
71
|
requirements:
|
52
72
|
- - "~>"
|
53
73
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
74
|
+
version: 0.7.3
|
55
75
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
76
|
+
name: rackup
|
57
77
|
requirement: !ruby/object:Gem::Requirement
|
58
78
|
requirements:
|
59
79
|
- - "~>"
|
60
80
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
81
|
+
version: '2.1'
|
62
82
|
type: :runtime
|
63
83
|
prerelease: false
|
64
84
|
version_requirements: !ruby/object:Gem::Requirement
|
65
85
|
requirements:
|
66
86
|
- - "~>"
|
67
87
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
88
|
+
version: '2.1'
|
69
89
|
- !ruby/object:Gem::Dependency
|
70
90
|
name: rbnacl
|
71
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +114,34 @@ dependencies:
|
|
94
114
|
- - "~>"
|
95
115
|
- !ruby/object:Gem::Version
|
96
116
|
version: '0.1'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: bigdecimal
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
type: :runtime
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: csv
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
type: :runtime
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
97
145
|
description: Command line interface for managing GitHub secrets in bulk
|
98
146
|
email: db@dannyben.com
|
99
147
|
executables:
|
@@ -119,8 +167,9 @@ files:
|
|
119
167
|
homepage: https://github.com/dannyben/secret_hub
|
120
168
|
licenses:
|
121
169
|
- MIT
|
122
|
-
metadata:
|
123
|
-
|
170
|
+
metadata:
|
171
|
+
rubygems_mfa_required: 'true'
|
172
|
+
post_install_message:
|
124
173
|
rdoc_options: []
|
125
174
|
require_paths:
|
126
175
|
- lib
|
@@ -128,15 +177,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
128
177
|
requirements:
|
129
178
|
- - ">="
|
130
179
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
180
|
+
version: '3.0'
|
132
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
182
|
requirements:
|
134
183
|
- - ">="
|
135
184
|
- !ruby/object:Gem::Version
|
136
185
|
version: '0'
|
137
186
|
requirements: []
|
138
|
-
rubygems_version: 3.
|
139
|
-
signing_key:
|
187
|
+
rubygems_version: 3.5.6
|
188
|
+
signing_key:
|
140
189
|
specification_version: 4
|
141
190
|
summary: Manage GitHub secrets over multiple repositories
|
142
191
|
test_files: []
|