easy_json_config 0.3.0 → 0.4.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 +5 -5
- data/lib/easy_json_config/config.rb +28 -15
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 26da301be576b29c521829a92f93ef11ca50c89ab7586f2acae0a7253431cb42
|
4
|
+
data.tar.gz: 8f4d542dbb5172d545f8dc331170ea1d32144e4a1a9f7133424933ec8114c0c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69f4d45122eb100972476ff1521c73e1e31556a22b066944310a31d917fcfdfc232f01e322851718b7fe711621d120f11cc780618ba529fd4651cfbb0a104d8d
|
7
|
+
data.tar.gz: 450c60f78888d1f55139a95ac9c41378d314bb6e4f04c7f8fe08e16adc55ee041ac8f639c539c4108096896bd8ed1bb5638efc97aa4e81e641db3f385bc7d0cb
|
@@ -13,11 +13,20 @@ module EasyJSON
|
|
13
13
|
attr_reader :path
|
14
14
|
|
15
15
|
def [](key)
|
16
|
-
|
16
|
+
@config = Hashly.deep_merge(@config, @frozen_values)
|
17
|
+
@config[key]
|
18
|
+
end
|
19
|
+
|
20
|
+
def []=(key, value)
|
21
|
+
@config[key] = value
|
17
22
|
end
|
18
23
|
|
19
24
|
def to_s
|
20
|
-
"Config path: #{path}\
|
25
|
+
"Config path: #{path}\nContent: #{JSON.pretty_generate @config}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_h
|
29
|
+
Hashly.deep_merge(@config, @frozen_values).to_h
|
21
30
|
end
|
22
31
|
|
23
32
|
# Add a hash of default keys and values to be merged over the current defaults (if any).
|
@@ -32,22 +41,13 @@ module EasyJSON
|
|
32
41
|
@frozen_values = Hashly.deep_merge(@frozen_values, new_frozen_values)
|
33
42
|
end
|
34
43
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
config = Hashly.deep_merge(config, @frozen_values)
|
39
|
-
missing_required_keys = Hashly.deep_diff_by_key(config, @required_keys)
|
40
|
-
raise "The following keys are missing from #{path}: #{missing_required_keys}" unless missing_required_keys.empty?
|
41
|
-
config
|
42
|
-
end
|
43
|
-
|
44
|
-
def values_without_sensitive_or_hardcoded_keys
|
45
|
-
non_sensitive_values = Hashly.deep_reject(values) { |k, _v| @sensitive_keys.include?(k) }
|
46
|
-
Hashly.deep_reject_by_hash(non_sensitive_values, @frozen_values)
|
44
|
+
def config_without_sensitive_or_hardcoded_keys
|
45
|
+
non_sensitive_content = Hashly.deep_reject(@config) { |k, _v| @sensitive_keys.include?(k) }
|
46
|
+
Hashly.deep_reject_by_hash(non_sensitive_content, @frozen_values)
|
47
47
|
end
|
48
48
|
|
49
49
|
def save
|
50
|
-
::File.write(path,
|
50
|
+
::File.write(path, config_without_sensitive_or_hardcoded_keys.to_json)
|
51
51
|
end
|
52
52
|
|
53
53
|
def add_required_keys(new_required_keys)
|
@@ -72,11 +72,23 @@ module EasyJSON
|
|
72
72
|
instance.add_defaults(defaults)
|
73
73
|
instance.freeze_values(frozen_values)
|
74
74
|
instance.add_required_keys(required_keys)
|
75
|
+
instance.initialize_config
|
75
76
|
return instance
|
76
77
|
end
|
77
78
|
EasyJSON.configs[path] = super(path, defaults, frozen_values, required_keys) # create new instance if none existed
|
78
79
|
end
|
79
80
|
|
81
|
+
# returns a hash containing the json config file values merged over the default values.
|
82
|
+
def initialize_config
|
83
|
+
@config ||= {}
|
84
|
+
@config = Hashly.deep_merge(@config, @defaults)
|
85
|
+
@config = Hashly.deep_merge(@config, @json_config)
|
86
|
+
@config = Hashly.deep_merge(@config, @frozen_values)
|
87
|
+
missing_required_keys = Hashly.deep_diff_by_key(@config, @required_keys)
|
88
|
+
raise "The following keys are missing from #{path}: #{missing_required_keys}" unless missing_required_keys.empty?
|
89
|
+
@config
|
90
|
+
end
|
91
|
+
|
80
92
|
private
|
81
93
|
|
82
94
|
def initialize(path, defaults, frozen_values, required_keys)
|
@@ -86,6 +98,7 @@ module EasyJSON
|
|
86
98
|
@required_keys = required_keys || {}
|
87
99
|
::File.write(path, "{\n}") unless ::File.exist?(path) # Add empty config if none exists
|
88
100
|
@json_config = JSON.parse(::File.read(path))
|
101
|
+
initialize_config
|
89
102
|
end
|
90
103
|
end
|
91
104
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_json_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Munoz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -67,8 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
requirements: []
|
70
|
-
|
71
|
-
rubygems_version: 2.5.2.3
|
70
|
+
rubygems_version: 3.0.3.1
|
72
71
|
signing_key:
|
73
72
|
specification_version: 4
|
74
73
|
summary: Ruby library for ease of using a basic json config file with the ability
|