secret_env 0.1.0 → 0.2.0
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/lib/secret_env/storage.rb +56 -0
- data/lib/secret_env/version.rb +1 -1
- data/lib/secret_env.rb +4 -33
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7323742d6e6c066b4c0239a3149a548498d82fa1
|
4
|
+
data.tar.gz: 418b98c1383ebd67311dafe21232fe7e4069f6e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6c9cc0d8615845abcfef44eb754e50d086b84d1a8f80d91a75e563af0e58f2ec9ab2baa598ab149e3e29a7b2d2c06764d199d0ce4aefb9ae9386529d018cb11
|
7
|
+
data.tar.gz: ebb1ab0278300772720a5a9ec1538bbb316676971e6049d469dddbccaee8faea109e8467a500cc8055d5f50275291002d64d613ffee61f4d9f760648413d8221
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module SecretEnv
|
2
|
+
module Storage
|
3
|
+
class << self
|
4
|
+
def setup(config)
|
5
|
+
if config
|
6
|
+
klass(config.fetch('type')).new(namespace: config['namespace'])
|
7
|
+
else
|
8
|
+
Storage::Plain.new
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def klass(type)
|
15
|
+
case type
|
16
|
+
when 'plain'
|
17
|
+
Storage::Plain
|
18
|
+
when 'credstash'
|
19
|
+
Storage::CredStash
|
20
|
+
else
|
21
|
+
raise "Unknown storage type: #{type}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Base
|
27
|
+
attr_reader :namespace
|
28
|
+
|
29
|
+
def initialize(namespace: '')
|
30
|
+
@namespace = namespace
|
31
|
+
end
|
32
|
+
|
33
|
+
def retrieve(secret_key)
|
34
|
+
raise NotImplemedError
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def full_key(secret_key)
|
40
|
+
"#{namespace}#{secret_key}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class Plain < Base
|
45
|
+
def retrieve(secret_key)
|
46
|
+
"#\{#{full_key(secret_key)}\}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class CredStash < Base
|
51
|
+
def retrieve(secret_key)
|
52
|
+
::CredStash.get(full_key(secret_key))
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/secret_env/version.rb
CHANGED
data/lib/secret_env.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
require
|
1
|
+
require 'secret_env/version'
|
2
|
+
require 'secret_env/storage'
|
2
3
|
require 'yaml'
|
3
4
|
|
4
5
|
module SecretEnv
|
@@ -7,18 +8,7 @@ module SecretEnv
|
|
7
8
|
def self.load(env: 'development')
|
8
9
|
config = YAML.load_file(SECRETS_FILE).fetch(env)
|
9
10
|
|
10
|
-
storage =
|
11
|
-
case config['storage'].fetch('type')
|
12
|
-
when 'plain'
|
13
|
-
Storage::Plain.new
|
14
|
-
when 'credstash'
|
15
|
-
Storage::CredStash.new
|
16
|
-
else
|
17
|
-
raise "Unknown storage type: #{config['storage']['type']}"
|
18
|
-
end
|
19
|
-
else
|
20
|
-
Storage::Plain.new
|
21
|
-
end
|
11
|
+
storage = Storage.setup(config['storage'])
|
22
12
|
|
23
13
|
Array(config.fetch('env')).each do |key, raw_value|
|
24
14
|
record = Record.new(key: key, raw_value: raw_value, storage: storage)
|
@@ -43,29 +33,10 @@ module SecretEnv
|
|
43
33
|
secret = @storage.retrieve(secret_key)
|
44
34
|
parts << part.gsub(scanner.matched, secret)
|
45
35
|
end
|
36
|
+
parts << scanner.rest
|
46
37
|
parts.join
|
47
38
|
end
|
48
39
|
end
|
49
|
-
|
50
|
-
module Storage
|
51
|
-
class Base
|
52
|
-
def retrieve(secret_key)
|
53
|
-
raise NotImplemedError
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
class Plain < Base
|
58
|
-
def retrieve(secret_key)
|
59
|
-
"#\{#{secret_key}\}"
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
class CredStash < Base
|
64
|
-
def retrieve(secret_key)
|
65
|
-
::CredStash.get(secret_key)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
40
|
end
|
70
41
|
|
71
42
|
require 'secret_env/rails' if defined?(Rails)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: secret_env
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- adorechic
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- exe/secret_env
|
87
87
|
- lib/secret_env.rb
|
88
88
|
- lib/secret_env/rails.rb
|
89
|
+
- lib/secret_env/storage.rb
|
89
90
|
- lib/secret_env/version.rb
|
90
91
|
- secret_env.gemspec
|
91
92
|
homepage:
|