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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88c48b0708d96f97993a42390a6c6d6d17a8e24394dee86b42d876b37ea26698
4
- data.tar.gz: 04e4a033cb797c6bee0a9e63062ad8a43dc0cbaeeaee4a8a7124f90dee608967
3
+ metadata.gz: e6ef2af16df9264f460351d3252b5c825d999fe16396bda55777563eac1ac6f8
4
+ data.tar.gz: 63e355e73008164ba95d5a534d78d170adf870c272dee4931fff1671924dcf5c
5
5
  SHA512:
6
- metadata.gz: 3f4a84d333b9fda8e729f2090eb68da8a65d79e01a4a17286eb97ebb2dd13836746afcd8ec4ef012857599539b23a5de71d313010178cfc650f862c40e2dddc6
7
- data.tar.gz: 50afc947274be3acbe9d56fb359f51ee044e93a3c7fcfb8ff53d9c05c2a888ed9d97aa375ff6d4691e8f5ed10a32d0deab66a96cf8ea4d3b3a4cb2def6282e5a
6
+ metadata.gz: c1166390d81f276d918cbcfe18df028f3b57c9474758b4aadcea2fc61f17cd04f2080c0cf16002be2eacdeb15f7f690627bc917f0830580c1f14d7ca8a3f0fad
7
+ data.tar.gz: 55e43c7d62f8bd9623de2bb0618b7a144330058814c13c7c05c507edbdf9d241f2c7ce55de1efd1d67133ad7ba4d0f3af2dd59c083f871022d39596a80da841e
@@ -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.5-node
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
@@ -1,6 +1,5 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
5
  /doc/
@@ -17,6 +17,7 @@ Style/Documentation:
17
17
  Enabled: false
18
18
  AllCops:
19
19
  TargetRubyVersion: 2.5
20
+ NewCops: enable
20
21
  Style/FrozenStringLiteralComment:
21
22
  Enabled: false
22
23
  Naming/FileName:
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in legion-settings.gemspec
4
3
  gemspec
@@ -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
@@ -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
- if RUBY_ENGINE == 'jruby'
30
- spec.add_dependency('legion-json-jruby', '~> 0.1')
31
- else
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
@@ -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.load_module_default(thing)
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.gsub('.', '_')}.#{::Process.pid}"
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: 'debug',
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) # rubocop:disable Metrics/AbcSize
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 = ('validate_' + category.to_s.chop).to_sym
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
@@ -1,5 +1,5 @@
1
1
  module Legion
2
2
  module Settings
3
- VERSION = '0.2.0'.freeze
3
+ VERSION = '1.1.2'.freeze
4
4
  end
5
5
  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: 0.2.0
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
8
- autorequire:
9
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-27 00:00:00.000000000 Z
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.1'
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.1'
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.1'
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.1'
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: '0'
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.0.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: []
@@ -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__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here