precursor 0.5.1 → 0.7.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/argv_vault.rb +3 -2
- data/lib/config_root.rb +15 -11
- data/lib/env_vault.rb +5 -7
- data/lib/hash_vault.rb +3 -1
- data/lib/override_vault.rb +3 -10
- data/lib/thread_local_override_vault.rb +1 -1
- data/lib/vault.rb +9 -2
- data/lib/version.rb +1 -1
- data/lib/yaml_file_vault.rb +22 -0
- data/lib/yaml_vault.rb +4 -4
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbc70ecd1d4be18a82e77b39dea4e6e93e5076dab9eab469e1a90d069e8a8dd0
|
4
|
+
data.tar.gz: a8b41e389d001346cfbe191c3900de5af73647b0742467863db4da388c3a5727
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 646c1c70e9f2ca03c6d39aa625d80f3cee5f34e35cbd63d0f2867de883618668608667f37f7924fdb1a2899600a7d2441bc94d272c04937ba0ae1d24e36c918a
|
7
|
+
data.tar.gz: bcb6624852cd7e8fcf6a93fe83b376cc3be9b34a5fd146b4c9fe7a01a50f27855b5a30c69fffceee82e7acd7ff1afd9321e2fc2f1459998dcbc31ae14d3c669f
|
data/lib/argv_vault.rb
CHANGED
@@ -13,6 +13,7 @@ module Precursor
|
|
13
13
|
def initialize(argv)
|
14
14
|
super()
|
15
15
|
|
16
|
+
@argv = argv
|
16
17
|
@vault_data = {}
|
17
18
|
@parser = OptionParser.new do |parser|
|
18
19
|
parser.on('-h', '--help', 'Prints this help') do
|
@@ -21,7 +22,6 @@ module Precursor
|
|
21
22
|
end
|
22
23
|
end
|
23
24
|
yield self
|
24
|
-
@parser.parse(argv)
|
25
25
|
end
|
26
26
|
|
27
27
|
def key(key_name)
|
@@ -32,7 +32,8 @@ module Precursor
|
|
32
32
|
|
33
33
|
protected
|
34
34
|
|
35
|
-
def
|
35
|
+
def load_store(_config_root)
|
36
|
+
@parser.parse(@argv)
|
36
37
|
@vault_data
|
37
38
|
end
|
38
39
|
|
data/lib/config_root.rb
CHANGED
@@ -6,6 +6,10 @@ module Precursor
|
|
6
6
|
def initialize(vaults, key_options)
|
7
7
|
@vaults = vaults
|
8
8
|
@key_options = key_options
|
9
|
+
|
10
|
+
@vaults.each do |v|
|
11
|
+
v.load(self)
|
12
|
+
end
|
9
13
|
end
|
10
14
|
|
11
15
|
def [](key)
|
@@ -14,7 +18,17 @@ module Precursor
|
|
14
18
|
value = key_vault.value key unless key_vault.nil?
|
15
19
|
value = get_default(key) if key_vault.nil?
|
16
20
|
|
17
|
-
value.is_a?(String) ?
|
21
|
+
value.is_a?(String) ? resolve(value) : value
|
22
|
+
end
|
23
|
+
|
24
|
+
def resolve(str)
|
25
|
+
res = str
|
26
|
+
until (m = res.match(VAR_PATTERN)).nil?
|
27
|
+
k = m[1]
|
28
|
+
v = self[k.to_sym]
|
29
|
+
res = res.sub("${#{k}}", v.to_s)
|
30
|
+
end
|
31
|
+
res
|
18
32
|
end
|
19
33
|
|
20
34
|
private
|
@@ -28,15 +42,5 @@ module Precursor
|
|
28
42
|
|
29
43
|
@key_options[key][:default]
|
30
44
|
end
|
31
|
-
|
32
|
-
def resolve_variables(str)
|
33
|
-
res = str
|
34
|
-
until (m = res.match(VAR_PATTERN)).nil?
|
35
|
-
k = m[1]
|
36
|
-
v = self[k.to_sym]
|
37
|
-
res = res.sub("${#{k}}", v.to_s)
|
38
|
-
end
|
39
|
-
res
|
40
|
-
end
|
41
45
|
end
|
42
46
|
end
|
data/lib/env_vault.rb
CHANGED
@@ -12,17 +12,15 @@ module Precursor
|
|
12
12
|
super()
|
13
13
|
@separator = separator
|
14
14
|
|
15
|
-
allow_set = Set.new(allow_list)
|
16
|
-
|
17
|
-
@env_vars = ENV.select { |n, _| allow_set.empty? || allow_set.include?(n) }.transform_keys do |name|
|
18
|
-
name.sub(@separator, '.').to_sym
|
19
|
-
end
|
15
|
+
@allow_set = Set.new(allow_list)
|
20
16
|
end
|
21
17
|
|
22
18
|
protected
|
23
19
|
|
24
|
-
def
|
25
|
-
@
|
20
|
+
def load_store(_config_root)
|
21
|
+
ENV.select { |n, _| @allow_set.empty? || @allow_set.include?(n) }.transform_keys do |name|
|
22
|
+
name.sub(@separator, '.').to_sym
|
23
|
+
end
|
26
24
|
end
|
27
25
|
end
|
28
26
|
end
|
data/lib/hash_vault.rb
CHANGED
data/lib/override_vault.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative '
|
3
|
+
require_relative 'hash_vault'
|
4
4
|
|
5
5
|
module Precursor
|
6
6
|
# Vault that stores data in hash and allows to override config on the fly
|
7
7
|
class OverrideVault < Vault
|
8
|
-
def initialize
|
9
|
-
super()
|
10
|
-
@vault_data = {}
|
8
|
+
def initialize(hash = {})
|
9
|
+
super(hash)
|
11
10
|
end
|
12
11
|
|
13
12
|
def override(key, value)
|
@@ -17,11 +16,5 @@ module Precursor
|
|
17
16
|
def clear(key)
|
18
17
|
store.delete(key)
|
19
18
|
end
|
20
|
-
|
21
|
-
protected
|
22
|
-
|
23
|
-
def store
|
24
|
-
@vault_data
|
25
|
-
end
|
26
19
|
end
|
27
20
|
end
|
data/lib/vault.rb
CHANGED
@@ -3,6 +3,14 @@
|
|
3
3
|
module Precursor
|
4
4
|
# Base class for config vaults
|
5
5
|
class Vault
|
6
|
+
attr_reader :store
|
7
|
+
|
8
|
+
# Loads vault data from the source
|
9
|
+
# @param config_root [Precursor::ConfigRoot] A reference to config root to read values or resolve vars
|
10
|
+
def load(config_root)
|
11
|
+
@store = load_store(config_root)
|
12
|
+
end
|
13
|
+
|
6
14
|
# Returns true if the vault has a value for the given key, otherwise false
|
7
15
|
# @return [Boolean] true if the vault has a value for the given key, otherwise false
|
8
16
|
def key?(key)
|
@@ -17,8 +25,7 @@ module Precursor
|
|
17
25
|
|
18
26
|
protected
|
19
27
|
|
20
|
-
|
21
|
-
def store
|
28
|
+
def load_store(_config_root)
|
22
29
|
{}
|
23
30
|
end
|
24
31
|
end
|
data/lib/version.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'yaml_vault'
|
4
|
+
|
5
|
+
module Precursor
|
6
|
+
# A vault that reads yaml data from a file
|
7
|
+
class YamlFileVault < YamlVault
|
8
|
+
def initialize(file_path)
|
9
|
+
super('')
|
10
|
+
@file_path = file_path
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
|
15
|
+
def load_store(config_root)
|
16
|
+
file_path = config_root.resolve(@file_path)
|
17
|
+
@yaml = File.new(file_path).read if File.exist?(file_path)
|
18
|
+
|
19
|
+
super(config_root)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/yaml_vault.rb
CHANGED
@@ -7,15 +7,15 @@ require_relative 'vault'
|
|
7
7
|
module Precursor
|
8
8
|
# Vault that reads config data from a string with Yaml
|
9
9
|
class YamlVault < Vault
|
10
|
-
def initialize(
|
10
|
+
def initialize(yaml)
|
11
11
|
super()
|
12
|
-
@yaml =
|
12
|
+
@yaml = yaml
|
13
13
|
end
|
14
14
|
|
15
15
|
protected
|
16
16
|
|
17
|
-
def
|
18
|
-
@yaml
|
17
|
+
def load_store(_config_root)
|
18
|
+
flat_hash(YAML.safe_load(@yaml))
|
19
19
|
end
|
20
20
|
|
21
21
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: precursor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrey Maraev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: optparse
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.2.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: code-scanning-rubocop
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: debug
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,6 +84,7 @@ files:
|
|
70
84
|
- lib/thread_local_override_vault.rb
|
71
85
|
- lib/vault.rb
|
72
86
|
- lib/version.rb
|
87
|
+
- lib/yaml_file_vault.rb
|
73
88
|
- lib/yaml_vault.rb
|
74
89
|
homepage: https://github.com/the-vk/precursor
|
75
90
|
licenses:
|