secret_hub 0.2.0 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- 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 +28 -22
- data/lib/secret_hub/commands/repo.rb +28 -22
- data/lib/secret_hub/config.rb +15 -8
- data/lib/secret_hub/exceptions.rb +3 -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/README.md
CHANGED
@@ -61,7 +61,7 @@ Run secrethub COMMAND --help for command specific help
|
|
61
61
|
$ secrethub repo
|
62
62
|
Usage:
|
63
63
|
secrethub repo list REPO
|
64
|
-
secrethub repo save REPO KEY VALUE
|
64
|
+
secrethub repo save REPO KEY [VALUE]
|
65
65
|
secrethub repo delete REPO KEY
|
66
66
|
secrethub repo (-h|--help)
|
67
67
|
|
@@ -69,7 +69,7 @@ Usage:
|
|
69
69
|
$ secrethub org
|
70
70
|
Usage:
|
71
71
|
secrethub org list ORG
|
72
|
-
secrethub org save ORG KEY VALUE
|
72
|
+
secrethub org save ORG KEY [VALUE]
|
73
73
|
secrethub org delete ORG KEY
|
74
74
|
secrethub org (-h|--help)
|
75
75
|
|
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,40 +1,41 @@
|
|
1
1
|
module SecretHub
|
2
2
|
module Commands
|
3
3
|
class Org < Base
|
4
|
-
summary
|
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)"
|
4
|
+
summary 'Manage organization secrets'
|
10
5
|
|
11
|
-
|
12
|
-
|
13
|
-
|
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)'
|
14
10
|
|
15
|
-
|
16
|
-
|
17
|
-
|
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'
|
18
14
|
|
19
|
-
|
20
|
-
|
21
|
-
|
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'
|
22
23
|
|
23
24
|
def list_command
|
24
|
-
say "
|
25
|
+
say "b`#{org}`:"
|
25
26
|
github.org_secrets(org).each do |secret|
|
26
|
-
say "-
|
27
|
+
say "- m`#{secret}`"
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
30
|
-
def save_command
|
31
|
+
def save_command
|
31
32
|
github.put_org_secret org, key, value
|
32
|
-
say "Saved
|
33
|
+
say "Saved b`#{org}` m`#{key}`"
|
33
34
|
end
|
34
35
|
|
35
36
|
def delete_command
|
36
37
|
github.delete_org_secret org, key
|
37
|
-
say "Deleted
|
38
|
+
say "Deleted b`#{org}` m`#{key}`"
|
38
39
|
end
|
39
40
|
|
40
41
|
private
|
@@ -48,9 +49,14 @@ module SecretHub
|
|
48
49
|
end
|
49
50
|
|
50
51
|
def value
|
51
|
-
args['VALUE']
|
52
|
-
|
52
|
+
result = args['VALUE'] || ENV[key]
|
53
|
+
unless result
|
54
|
+
raise InvalidInput,
|
55
|
+
"Please provide a value, either in the command line or in the environment variable '#{key}'"
|
56
|
+
end
|
53
57
|
|
58
|
+
result
|
59
|
+
end
|
54
60
|
end
|
55
61
|
end
|
56
62
|
end
|
@@ -1,40 +1,41 @@
|
|
1
1
|
module SecretHub
|
2
2
|
module Commands
|
3
3
|
class Repo < Base
|
4
|
-
summary
|
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)"
|
4
|
+
summary 'Manage repository secrets'
|
10
5
|
|
11
|
-
|
12
|
-
|
13
|
-
|
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)'
|
14
10
|
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
command 'list', 'Show all repository secrets'
|
12
|
+
command 'save', 'Create or update a repository secret'
|
13
|
+
command 'delete', 'Delete a repository secret'
|
18
14
|
|
19
|
-
|
20
|
-
|
21
|
-
|
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'
|
22
23
|
|
23
24
|
def list_command
|
24
|
-
say "
|
25
|
+
say "b`#{repo}`:"
|
25
26
|
github.secrets(repo).each do |secret|
|
26
|
-
say "-
|
27
|
+
say "- m`#{secret}`"
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
30
|
-
def save_command
|
31
|
+
def save_command
|
31
32
|
github.put_secret repo, key, value
|
32
|
-
say "Saved
|
33
|
+
say "Saved b`#{repo}` m`#{key}`"
|
33
34
|
end
|
34
35
|
|
35
36
|
def delete_command
|
36
37
|
github.delete_secret repo, key
|
37
|
-
say "Deleted
|
38
|
+
say "Deleted b`#{repo}` m`#{key}`"
|
38
39
|
end
|
39
40
|
|
40
41
|
private
|
@@ -48,9 +49,14 @@ module SecretHub
|
|
48
49
|
end
|
49
50
|
|
50
51
|
def value
|
51
|
-
args['VALUE']
|
52
|
-
|
52
|
+
result = args['VALUE'] || ENV[key]
|
53
|
+
unless result
|
54
|
+
raise InvalidInput,
|
55
|
+
"Please provide a value, either in the command line or in the environment variable '#{key}'"
|
56
|
+
end
|
53
57
|
|
58
|
+
result
|
59
|
+
end
|
54
60
|
end
|
55
61
|
end
|
56
62
|
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
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module SecretHub
|
2
2
|
SecretHubError = Class.new StandardError
|
3
3
|
ConfigurationError = Class.new SecretHubError
|
4
|
-
|
4
|
+
InvalidInput = Class.new SecretHubError
|
5
|
+
|
5
6
|
class APIError < SecretHubError
|
6
7
|
attr_reader :response
|
7
8
|
|
@@ -10,4 +11,4 @@ module SecretHub
|
|
10
11
|
super "[#{response.code}] #{response.body}"
|
11
12
|
end
|
12
13
|
end
|
13
|
-
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: []
|