legion-settings 0.2.0 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
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