legion-settings 0.2.0 → 1.1.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/.circleci/config.yml +26 -4
- data/.gitignore +0 -1
- data/.rubocop.yml +1 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +74 -0
- data/legion-settings.gemspec +4 -8
- data/lib/legion/settings.rb +2 -1
- data/lib/legion/settings/loader.rb +10 -22
- data/lib/legion/settings/validator.rb +1 -1
- data/lib/legion/settings/version.rb +1 -1
- data/sonar-project.properties +12 -0
- metadata +32 -18
- data/bin/console +0 -14
- data/bin/setup +0 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e6ef2af16df9264f460351d3252b5c825d999fe16396bda55777563eac1ac6f8
|
|
4
|
+
data.tar.gz: 63e355e73008164ba95d5a534d78d170adf870c272dee4931fff1671924dcf5c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c1166390d81f276d918cbcfe18df028f3b57c9474758b4aadcea2fc61f17cd04f2080c0cf16002be2eacdeb15f7f690627bc917f0830580c1f14d7ca8a3f0fad
|
|
7
|
+
data.tar.gz: 55e43c7d62f8bd9623de2bb0618b7a144330058814c13c7c05c507edbdf9d241f2c7ce55de1efd1d67133ad7ba4d0f3af2dd59c083f871022d39596a80da841e
|
data/.circleci/config.yml
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
version: 2.1
|
|
2
2
|
orbs:
|
|
3
3
|
ruby: circleci/ruby@0.2.1
|
|
4
|
+
sonarcloud: sonarsource/sonarcloud@1.0.1
|
|
4
5
|
|
|
5
6
|
jobs:
|
|
6
7
|
"rubocop":
|
|
7
8
|
docker:
|
|
8
|
-
- image: circleci/ruby:2.
|
|
9
|
+
- image: circleci/ruby:2.7-node
|
|
9
10
|
steps:
|
|
10
11
|
- checkout
|
|
11
12
|
- ruby/load-cache
|
|
@@ -17,20 +18,24 @@ jobs:
|
|
|
17
18
|
"ruby-two-five":
|
|
18
19
|
docker:
|
|
19
20
|
- image: circleci/ruby:2.5
|
|
20
|
-
- image: memcached:1.5-alpine
|
|
21
21
|
steps:
|
|
22
22
|
- checkout
|
|
23
23
|
- ruby/load-cache
|
|
24
|
+
- run:
|
|
25
|
+
name: update bundler
|
|
26
|
+
command: gem update bundler
|
|
24
27
|
- ruby/install-deps
|
|
25
28
|
- ruby/run-tests
|
|
26
29
|
- ruby/save-cache
|
|
27
30
|
"ruby-two-six":
|
|
28
31
|
docker:
|
|
29
32
|
- image: circleci/ruby:2.6
|
|
30
|
-
- image: memcached:1.5-alpine
|
|
31
33
|
steps:
|
|
32
34
|
- checkout
|
|
33
35
|
- ruby/load-cache
|
|
36
|
+
- run:
|
|
37
|
+
name: update bundler
|
|
38
|
+
command: gem update bundler
|
|
34
39
|
- ruby/install-deps
|
|
35
40
|
- ruby/run-tests
|
|
36
41
|
- ruby/save-cache
|
|
@@ -44,6 +49,19 @@ jobs:
|
|
|
44
49
|
- ruby/install-deps
|
|
45
50
|
- ruby/run-tests
|
|
46
51
|
- ruby/save-cache
|
|
52
|
+
"sonarcloud":
|
|
53
|
+
docker:
|
|
54
|
+
- image: circleci/ruby:2.7
|
|
55
|
+
steps:
|
|
56
|
+
- checkout
|
|
57
|
+
- ruby/load-cache
|
|
58
|
+
- ruby/install-deps
|
|
59
|
+
- ruby/run-tests
|
|
60
|
+
- run:
|
|
61
|
+
name: Run Rubocop
|
|
62
|
+
command: bundle exec rubocop --format=json --out=rubocop-result.json
|
|
63
|
+
- sonarcloud/scan
|
|
64
|
+
- ruby/save-cache
|
|
47
65
|
|
|
48
66
|
workflows:
|
|
49
67
|
version: 2
|
|
@@ -58,4 +76,8 @@ workflows:
|
|
|
58
76
|
- ruby-two-five
|
|
59
77
|
- ruby-two-seven:
|
|
60
78
|
requires:
|
|
61
|
-
- ruby-two-five
|
|
79
|
+
- ruby-two-five
|
|
80
|
+
- sonarcloud:
|
|
81
|
+
requires:
|
|
82
|
+
- ruby-two-seven
|
|
83
|
+
- ruby-two-six
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
legion-settings (1.1.2)
|
|
5
|
+
legion-json
|
|
6
|
+
legion-logging
|
|
7
|
+
|
|
8
|
+
GEM
|
|
9
|
+
remote: https://rubygems.org/
|
|
10
|
+
specs:
|
|
11
|
+
ast (2.4.1)
|
|
12
|
+
diff-lcs (1.4.4)
|
|
13
|
+
docile (1.3.2)
|
|
14
|
+
json_pure (2.3.1)
|
|
15
|
+
legion-json (1.1.2)
|
|
16
|
+
json_pure
|
|
17
|
+
multi_json
|
|
18
|
+
legion-logging (1.1.1)
|
|
19
|
+
rainbow (~> 3)
|
|
20
|
+
multi_json (1.15.0)
|
|
21
|
+
parallel (1.19.2)
|
|
22
|
+
parser (2.7.2.0)
|
|
23
|
+
ast (~> 2.4.1)
|
|
24
|
+
rainbow (3.0.0)
|
|
25
|
+
rake (13.0.1)
|
|
26
|
+
regexp_parser (1.8.2)
|
|
27
|
+
rexml (3.2.4)
|
|
28
|
+
rspec (3.9.0)
|
|
29
|
+
rspec-core (~> 3.9.0)
|
|
30
|
+
rspec-expectations (~> 3.9.0)
|
|
31
|
+
rspec-mocks (~> 3.9.0)
|
|
32
|
+
rspec-core (3.9.3)
|
|
33
|
+
rspec-support (~> 3.9.3)
|
|
34
|
+
rspec-expectations (3.9.2)
|
|
35
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
36
|
+
rspec-support (~> 3.9.0)
|
|
37
|
+
rspec-mocks (3.9.1)
|
|
38
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
39
|
+
rspec-support (~> 3.9.0)
|
|
40
|
+
rspec-support (3.9.3)
|
|
41
|
+
rspec_junit_formatter (0.4.1)
|
|
42
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
|
43
|
+
rubocop (0.93.1)
|
|
44
|
+
parallel (~> 1.10)
|
|
45
|
+
parser (>= 2.7.1.5)
|
|
46
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
47
|
+
regexp_parser (>= 1.8)
|
|
48
|
+
rexml
|
|
49
|
+
rubocop-ast (>= 0.6.0)
|
|
50
|
+
ruby-progressbar (~> 1.7)
|
|
51
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
|
52
|
+
rubocop-ast (0.8.0)
|
|
53
|
+
parser (>= 2.7.1.5)
|
|
54
|
+
ruby-progressbar (1.10.1)
|
|
55
|
+
simplecov (0.19.0)
|
|
56
|
+
docile (~> 1.1)
|
|
57
|
+
simplecov-html (~> 0.11)
|
|
58
|
+
simplecov-html (0.12.3)
|
|
59
|
+
unicode-display_width (1.7.0)
|
|
60
|
+
|
|
61
|
+
PLATFORMS
|
|
62
|
+
ruby
|
|
63
|
+
|
|
64
|
+
DEPENDENCIES
|
|
65
|
+
bundler
|
|
66
|
+
legion-settings!
|
|
67
|
+
rake
|
|
68
|
+
rspec
|
|
69
|
+
rspec_junit_formatter
|
|
70
|
+
rubocop
|
|
71
|
+
simplecov
|
|
72
|
+
|
|
73
|
+
BUNDLED WITH
|
|
74
|
+
2.1.4
|
data/legion-settings.gemspec
CHANGED
|
@@ -12,24 +12,20 @@ Gem::Specification.new do |spec|
|
|
|
12
12
|
spec.description = "Based on Sensu's implementation of settings"
|
|
13
13
|
spec.homepage = 'https://bitbucket.org/whonodes/legion-settings'
|
|
14
14
|
spec.license = 'MIT'
|
|
15
|
+
spec.required_ruby_version = '>= 2.5.0'
|
|
15
16
|
|
|
16
17
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
17
18
|
f.match(%r{^(test|spec|features)/})
|
|
18
19
|
end
|
|
19
|
-
spec.bindir = 'exe'
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
21
21
|
spec.require_paths = ['lib']
|
|
22
22
|
|
|
23
23
|
spec.add_development_dependency 'bundler'
|
|
24
|
-
# spec.add_development_dependency 'codecov', '~> 0'
|
|
25
24
|
spec.add_development_dependency 'rake'
|
|
26
25
|
spec.add_development_dependency 'rspec'
|
|
27
26
|
spec.add_development_dependency 'rspec_junit_formatter'
|
|
28
27
|
spec.add_development_dependency 'rubocop'
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
spec.add_dependency('legion-json', '~> 0.1')
|
|
33
|
-
end
|
|
34
|
-
spec.add_dependency 'legion-logging', '~> 0.1'
|
|
28
|
+
spec.add_development_dependency 'simplecov'
|
|
29
|
+
spec.add_dependency 'legion-json'
|
|
30
|
+
spec.add_dependency 'legion-logging'
|
|
35
31
|
end
|
data/lib/legion/settings.rb
CHANGED
|
@@ -7,6 +7,7 @@ module Legion
|
|
|
7
7
|
module Settings
|
|
8
8
|
class << self
|
|
9
9
|
attr_accessor :loader
|
|
10
|
+
|
|
10
11
|
def load(options = {})
|
|
11
12
|
@loader = Legion::Settings::Loader.new
|
|
12
13
|
@loader.load_env
|
|
@@ -40,7 +41,7 @@ module Legion
|
|
|
40
41
|
@loader = load if @loader.nil?
|
|
41
42
|
thing = {}
|
|
42
43
|
thing[key.to_sym] = hash
|
|
43
|
-
@loader.
|
|
44
|
+
@loader.load_module_settings(thing)
|
|
44
45
|
end
|
|
45
46
|
end
|
|
46
47
|
end
|
|
@@ -4,11 +4,7 @@ module Legion
|
|
|
4
4
|
module Settings
|
|
5
5
|
class Loader
|
|
6
6
|
class Error < RuntimeError; end
|
|
7
|
-
|
|
8
|
-
attr_reader :warnings
|
|
9
|
-
attr_reader :errors
|
|
10
|
-
attr_reader :loaded_files
|
|
11
|
-
attr_reader :settings
|
|
7
|
+
attr_reader :warnings, :errors, :loaded_files, :settings
|
|
12
8
|
|
|
13
9
|
def initialize
|
|
14
10
|
@warnings = []
|
|
@@ -16,14 +12,14 @@ module Legion
|
|
|
16
12
|
@settings = default_settings
|
|
17
13
|
@indifferent_access = false
|
|
18
14
|
@loaded_files = []
|
|
19
|
-
self.class.create_category_methods
|
|
20
15
|
end
|
|
21
16
|
|
|
22
17
|
def client_defaults
|
|
23
18
|
{
|
|
24
19
|
hostname: system_hostname,
|
|
25
20
|
address: system_address,
|
|
26
|
-
name: "#{::Socket.gethostname.
|
|
21
|
+
name: "#{::Socket.gethostname.tr('.', '_')}.#{::Process.pid}",
|
|
22
|
+
ready: false
|
|
27
23
|
}
|
|
28
24
|
end
|
|
29
25
|
|
|
@@ -38,11 +34,12 @@ module Legion
|
|
|
38
34
|
},
|
|
39
35
|
cache: { enabled: true, connected: false, driver: 'dalli' },
|
|
40
36
|
extensions: {},
|
|
37
|
+
auto_install_missing_lex: true,
|
|
41
38
|
default_extension_settings: {
|
|
42
39
|
logger: { level: 'info', trace: false, extended: false }
|
|
43
40
|
},
|
|
44
41
|
logging: {
|
|
45
|
-
level: '
|
|
42
|
+
level: 'info',
|
|
46
43
|
location: 'stdout',
|
|
47
44
|
trace: true,
|
|
48
45
|
backtrace_logging: true
|
|
@@ -52,18 +49,6 @@ module Legion
|
|
|
52
49
|
}
|
|
53
50
|
end
|
|
54
51
|
|
|
55
|
-
def self.create_category_methods
|
|
56
|
-
# CATEGORIES.each do |category|
|
|
57
|
-
# define_method(category) do
|
|
58
|
-
# setting_category(category)
|
|
59
|
-
# end
|
|
60
|
-
# method_name = category.to_s.chop + "_exists?"
|
|
61
|
-
# define_method(method_name.to_sym) do |name|
|
|
62
|
-
# definition_exists?(category, name)
|
|
63
|
-
# end
|
|
64
|
-
# end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
52
|
def to_hash
|
|
68
53
|
unless @indifferent_access
|
|
69
54
|
indifferent_access!
|
|
@@ -96,13 +81,17 @@ module Legion
|
|
|
96
81
|
load_api_env
|
|
97
82
|
end
|
|
98
83
|
|
|
84
|
+
def load_module_settings(config)
|
|
85
|
+
@settings = deep_merge(config, @settings)
|
|
86
|
+
end
|
|
87
|
+
|
|
99
88
|
def load_module_default(config)
|
|
100
89
|
merged = deep_merge(@settings, config)
|
|
101
90
|
deep_diff(@settings, merged) unless @loaded_files.empty?
|
|
102
91
|
@settings = merged
|
|
103
92
|
end
|
|
104
93
|
|
|
105
|
-
def load_file(file)
|
|
94
|
+
def load_file(file)
|
|
106
95
|
Legion::Logging.debug("Trying to load file #{file}")
|
|
107
96
|
if File.file?(file) && File.readable?(file)
|
|
108
97
|
begin
|
|
@@ -123,7 +112,6 @@ module Legion
|
|
|
123
112
|
end
|
|
124
113
|
|
|
125
114
|
def load_directory(directory)
|
|
126
|
-
warning('loading config files from directory', directory: directory)
|
|
127
115
|
path = directory.gsub(/\\(?=\S)/, '/')
|
|
128
116
|
if File.readable?(path) && File.executable?(path)
|
|
129
117
|
Dir.glob(File.join(path, '**{,/*/**}/*.json')).uniq.each do |file|
|
|
@@ -42,7 +42,7 @@ module Legion
|
|
|
42
42
|
def validate_categories(settings)
|
|
43
43
|
CATEGORIES.each do |category|
|
|
44
44
|
if is_a_hash?(settings[category])
|
|
45
|
-
validate_method =
|
|
45
|
+
validate_method = "validate_#{category.to_s.chop}".to_sym
|
|
46
46
|
settings[category].each do |name, details|
|
|
47
47
|
send(validate_method, details.merge(name: name.to_s))
|
|
48
48
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
sonar.projectKey=legion-io_legion-settings
|
|
2
|
+
sonar.organization=legion-io
|
|
3
|
+
sonar.projectName=Legion::Settings
|
|
4
|
+
sonar.sources=.
|
|
5
|
+
sonar.exclusions=vendor/**
|
|
6
|
+
sonar.coverage.exclusions=spec/**
|
|
7
|
+
sonar.ruby.coverage.reportPath=coverage/.resultset.json
|
|
8
|
+
sonar.ruby.file.suffixes=rb,ruby
|
|
9
|
+
sonar.ruby.coverage.framework=RSpec
|
|
10
|
+
sonar.ruby.rubocopConfig=.rubocop.yml
|
|
11
|
+
sonar.ruby.rubocop.reportPath=rubocop-result.json
|
|
12
|
+
sonar.ruby.rubocop.filePath=.
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: legion-settings
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
8
|
-
autorequire:
|
|
9
|
-
bindir:
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-10-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -80,34 +80,48 @@ dependencies:
|
|
|
80
80
|
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: simplecov
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: legion-json
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
86
100
|
requirements:
|
|
87
|
-
- - "
|
|
101
|
+
- - ">="
|
|
88
102
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0
|
|
103
|
+
version: '0'
|
|
90
104
|
type: :runtime
|
|
91
105
|
prerelease: false
|
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
107
|
requirements:
|
|
94
|
-
- - "
|
|
108
|
+
- - ">="
|
|
95
109
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0
|
|
110
|
+
version: '0'
|
|
97
111
|
- !ruby/object:Gem::Dependency
|
|
98
112
|
name: legion-logging
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
100
114
|
requirements:
|
|
101
|
-
- - "
|
|
115
|
+
- - ">="
|
|
102
116
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0
|
|
117
|
+
version: '0'
|
|
104
118
|
type: :runtime
|
|
105
119
|
prerelease: false
|
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
121
|
requirements:
|
|
108
|
-
- - "
|
|
122
|
+
- - ">="
|
|
109
123
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0
|
|
124
|
+
version: '0'
|
|
111
125
|
description: Based on Sensu's implementation of settings
|
|
112
126
|
email:
|
|
113
127
|
- matthewdiverson@gmail.com
|
|
@@ -120,11 +134,10 @@ files:
|
|
|
120
134
|
- ".rubocop.yml"
|
|
121
135
|
- CHANGELOG.md
|
|
122
136
|
- Gemfile
|
|
137
|
+
- Gemfile.lock
|
|
123
138
|
- LICENSE.txt
|
|
124
139
|
- README.md
|
|
125
140
|
- Rakefile
|
|
126
|
-
- bin/console
|
|
127
|
-
- bin/setup
|
|
128
141
|
- bitbucket-pipelines.yml
|
|
129
142
|
- legion-settings.gemspec
|
|
130
143
|
- lib/legion/settings.rb
|
|
@@ -135,11 +148,12 @@ files:
|
|
|
135
148
|
- lib/legion/settings/validators.rb
|
|
136
149
|
- lib/legion/settings/validators/legion.rb
|
|
137
150
|
- lib/legion/settings/version.rb
|
|
151
|
+
- sonar-project.properties
|
|
138
152
|
homepage: https://bitbucket.org/whonodes/legion-settings
|
|
139
153
|
licenses:
|
|
140
154
|
- MIT
|
|
141
155
|
metadata: {}
|
|
142
|
-
post_install_message:
|
|
156
|
+
post_install_message:
|
|
143
157
|
rdoc_options: []
|
|
144
158
|
require_paths:
|
|
145
159
|
- lib
|
|
@@ -147,15 +161,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
147
161
|
requirements:
|
|
148
162
|
- - ">="
|
|
149
163
|
- !ruby/object:Gem::Version
|
|
150
|
-
version:
|
|
164
|
+
version: 2.5.0
|
|
151
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
166
|
requirements:
|
|
153
167
|
- - ">="
|
|
154
168
|
- !ruby/object:Gem::Version
|
|
155
169
|
version: '0'
|
|
156
170
|
requirements: []
|
|
157
|
-
rubygems_version: 3.
|
|
158
|
-
signing_key:
|
|
171
|
+
rubygems_version: 3.1.2
|
|
172
|
+
signing_key:
|
|
159
173
|
specification_version: 4
|
|
160
174
|
summary: Used to load the json settings files
|
|
161
175
|
test_files: []
|
data/bin/console
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require 'bundler/setup'
|
|
4
|
-
require 'legion/settings'
|
|
5
|
-
|
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
-
|
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
-
# require "pry"
|
|
11
|
-
# Pry.start
|
|
12
|
-
|
|
13
|
-
require 'irb'
|
|
14
|
-
IRB.start(__FILE__)
|