qonfig 0.23.0 → 0.24.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/.travis.yml +11 -9
- data/CHANGELOG.md +4 -0
- data/README.md +11 -4
- data/bin/rspec +1 -0
- data/lib/qonfig/dsl.rb +2 -2
- data/lib/qonfig/plugins/pretty_print.rb +7 -1
- data/lib/qonfig/plugins/pretty_print/ruby_2_7_basic_object_pp_patch.rb +44 -0
- data/lib/qonfig/settings.rb +2 -2
- data/lib/qonfig/uploaders/yaml.rb +1 -1
- data/lib/qonfig/version.rb +1 -1
- data/qonfig.gemspec +4 -5
- metadata +12 -26
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 43bd1182137cdfc1dbba1156fb39daa755a0e0aa4fa8cd9a58e9ee62afd8a682
|
|
4
|
+
data.tar.gz: 983d47af7e7d3edceff06ccdc5e17dfe18befa6768496c8dfbdbd909c7746beb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 544c1f4704f5cd33e08354bb47f202f8fe5356e698577eb15d176827e24fff77ecbc5d9fab19e79a1550c6d6771a70f8bec3228c2478737c24e15b49bf812986
|
|
7
|
+
data.tar.gz: 59fb280050df43e2af4b37e548073083fdcce19f7250778e8c5db596a0c2fbd373b4f479dea721531c39b3a51ed0fe643e08b3251b93d2ea31952609db1241c4
|
data/.travis.yml
CHANGED
|
@@ -4,28 +4,33 @@ matrix:
|
|
|
4
4
|
include:
|
|
5
5
|
- rvm: 2.4.9
|
|
6
6
|
gemfile: gemfiles/with_external_deps.gemfile
|
|
7
|
-
env: TEST_PLUGINS=true
|
|
7
|
+
env: TEST_PLUGINS=true FULL_TEST_COVERAGE_CHECK=true
|
|
8
8
|
- rvm: 2.5.7
|
|
9
9
|
gemfile: gemfiles/with_external_deps.gemfile
|
|
10
|
-
env: TEST_PLUGINS=true
|
|
10
|
+
env: TEST_PLUGINS=true FULL_TEST_COVERAGE_CHECK=true
|
|
11
11
|
- rvm: 2.6.5
|
|
12
12
|
gemfile: gemfiles/with_external_deps.gemfile
|
|
13
|
-
env: TEST_PLUGINS=true
|
|
13
|
+
env: TEST_PLUGINS=true FULL_TEST_COVERAGE_CHECK=true
|
|
14
|
+
- rvm: 2.7.0
|
|
15
|
+
gemfile: gemfiles/with_external_deps.gemfile
|
|
16
|
+
env: TEST_PLUGINS=true FULL_TEST_COVERAGE_CHECK=true
|
|
14
17
|
- rvm: ruby-head
|
|
15
18
|
gemfile: gemfiles/with_external_deps.gemfile
|
|
16
|
-
env: TEST_PLUGINS=true
|
|
19
|
+
env: TEST_PLUGINS=true FULL_TEST_COVERAGE_CHECK=true
|
|
17
20
|
- rvm: jruby-head
|
|
18
21
|
gemfile: gemfiles/with_external_deps.gemfile
|
|
19
|
-
env: TEST_PLUGINS=true
|
|
22
|
+
env: TEST_PLUGINS=true FULL_TEST_COVERAGE_CHECK=true
|
|
20
23
|
- rvm: truffleruby
|
|
21
24
|
gemfile: gemfiles/with_external_deps.gemfile
|
|
22
|
-
env: TEST_PLUGINS=true
|
|
25
|
+
env: TEST_PLUGINS=true FULL_TEST_COVERAGE_CHECK=true
|
|
23
26
|
- rvm: 2.4.9
|
|
24
27
|
gemfile: gemfiles/without_external_deps.gemfile
|
|
25
28
|
- rvm: 2.5.7
|
|
26
29
|
gemfile: gemfiles/without_external_deps.gemfile
|
|
27
30
|
- rvm: 2.6.5
|
|
28
31
|
gemfile: gemfiles/without_external_deps.gemfile
|
|
32
|
+
- rvm: 2.7.0
|
|
33
|
+
gemfile: gemfiles/without_external_deps.gemfile
|
|
29
34
|
- rvm: ruby-head
|
|
30
35
|
gemfile: gemfiles/without_external_deps.gemfile
|
|
31
36
|
- rvm: jruby-head
|
|
@@ -40,6 +45,3 @@ sudo: false
|
|
|
40
45
|
cache: bundler
|
|
41
46
|
before_install: gem install bundler
|
|
42
47
|
script: bundle exec rspec
|
|
43
|
-
notifications:
|
|
44
|
-
slack:
|
|
45
|
-
secure: I03SDv+IrKy3IkeGjjHUJ9VneFMiYpLzIgPOixGFO5zGVXgulwmun82KsrPSW5HkK1UEQCahfoXt1hNECPwxcdsY01q6LBYJQx1jD0q17bXHllN/q0C6lx3peRN0KqNAAOU3/mHZxLt3HFV+N3HsSnoxDMuSYJgKbjCL/QVG2L2UYT9vi+JRNM/thj8R6MWKWlOHemik40GbLr2anCOCqiALzxnJzh5nJyGj+9SGvjhHfQq/fAIrg1+Scu+UchG8d+1yS5JWsGTt1/JF08i+Ux4ceTQ7GNBNeA5cj/xuUzvRx6A85renxyTiZMKIL0+jeceUm8c+/46XFcq0F7/kJB36lwjFhX1JRphcu/VouRdEwW/BvH74wnyHtygqOpk0LH4shp7A1DIS1DlnBbeJxrR5hdMDnmV85kTU6w6H0BbncsYY/pH1fji1kgH6jCsdwqDlq4wLB8x8I+eZABBsfb/r55z/HnBmmxlvR7Rt3X5/yR3gJrsgRrDBBZ5LwYy1RSCDu76vMQqWGJKG03FdfqSNqmC5V4MC5Ez8yjGDW0Yle09mwvsL2c6fDXyDPCeB/gwNk+FvgLRXnv7C4BaBNEoG4JnCL/dwauoJNg0lB6uF34BEmYAhZIrdY1CI6BqPWnaVMJfcJSYekBVXDIELDnTFRWjaGU1y8dM6lNzDmYE=
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
|
|
4
|
+
## [0.24.0] - 2019-12-29
|
|
5
|
+
### Added
|
|
6
|
+
- Support for **Ruby@2.7**;
|
|
7
|
+
|
|
4
8
|
## [0.23.0] - 2019-12-12
|
|
5
9
|
### Added
|
|
6
10
|
- Support for `Pathname` file path in `.load_from_json`, `.load_from_yaml`, `.load_from_toml`, `.expose_yaml`, `.expose_json`, `.expose_toml`;
|
data/README.md
CHANGED
|
@@ -103,6 +103,7 @@ require 'qonfig'
|
|
|
103
103
|
- [toml](#plugins-toml) (support for `TOML` format)
|
|
104
104
|
- [pretty_print](#plugins-pretty_print) (beautified/prettified console output)
|
|
105
105
|
- [Roadmap](#roadmap)
|
|
106
|
+
- [Build](#build)
|
|
106
107
|
---
|
|
107
108
|
|
|
108
109
|
## Definition
|
|
@@ -633,9 +634,8 @@ config.settings.web_api # => "api.google.com"
|
|
|
633
634
|
|
|
634
635
|
---
|
|
635
636
|
|
|
636
|
-
- `Qonfig::Compacted`: represents the compacted config object with setting readers and setting
|
|
637
|
+
- `Qonfig::Compacted`: represents the compacted config object with setting readers, setting writers and setting predicates only - and no any other useful instance-based functionality:
|
|
637
638
|
- setting keys are represented as direct instace methods (`#settings` invokation does not need);
|
|
638
|
-
- no any other useful instance-based functionality - just setting readers, setting writers and setting predicates:
|
|
639
639
|
- support for index-like access methods (`[]`,`[]=`);
|
|
640
640
|
- full support of `Qonfig::DataSet` definition DSL commands:
|
|
641
641
|
- `setting`, `re_setting` [doc](#definition-and-access)
|
|
@@ -646,9 +646,9 @@ config.settings.web_api # => "api.google.com"
|
|
|
646
646
|
- support for validation of potential setting values `.valid_with?` [documentation](#validation-of-potential-setting-values);
|
|
647
647
|
- can be instantiated by:
|
|
648
648
|
- by existing config object: `Qonfig::DataSet#compacted` or `Qonfig::Compacted.build_from(config, &configuration)`;
|
|
649
|
-
- from existing `Qonfig::DataSet` class:
|
|
649
|
+
- from existing `Qonfig::DataSet` class: `Qonfig::DataSet.build_compacted`;
|
|
650
650
|
- by direct instantiation: `Qonfig::Compacted.new(settings_values = {}, &configuration)`;
|
|
651
|
-
- by implicit instance building without explicit class definition `Qonfig::Compacted.build(&dsl_commands)
|
|
651
|
+
- by implicit instance building without explicit class definition `Qonfig::Compacted.build(&dsl_commands)`;
|
|
652
652
|
- you can define your own instance methods too;
|
|
653
653
|
|
|
654
654
|
---
|
|
@@ -3214,6 +3214,13 @@ config = Config.new
|
|
|
3214
3214
|
- Rails reload plugin;
|
|
3215
3215
|
- **Minor**:
|
|
3216
3216
|
|
|
3217
|
+
## Build
|
|
3218
|
+
|
|
3219
|
+
```shell
|
|
3220
|
+
bin/rspec -w # test the core functionality and plugins
|
|
3221
|
+
bin/rspec -n # test only the core functionality
|
|
3222
|
+
```
|
|
3223
|
+
|
|
3217
3224
|
## Contributing
|
|
3218
3225
|
|
|
3219
3226
|
- Fork it ( https://github.com/0exp/qonfig/fork )
|
data/bin/rspec
CHANGED
data/lib/qonfig/dsl.rb
CHANGED
|
@@ -15,7 +15,7 @@ module Qonfig::DSL # rubocop:disable Metrics/ModuleLength
|
|
|
15
15
|
# @api private
|
|
16
16
|
# @since 0.1.0
|
|
17
17
|
# @version 0.20.0
|
|
18
|
-
# rubocop:disable
|
|
18
|
+
# rubocop:disable Layout/LineLength, Metrics/AbcSize
|
|
19
19
|
def extended(child_klass)
|
|
20
20
|
child_klass.instance_variable_set(:@definition_commands, Qonfig::CommandSet.new)
|
|
21
21
|
child_klass.instance_variable_set(:@instance_commands, Qonfig::CommandSet.new)
|
|
@@ -33,7 +33,7 @@ module Qonfig::DSL # rubocop:disable Metrics/ModuleLength
|
|
|
33
33
|
end
|
|
34
34
|
end)
|
|
35
35
|
end
|
|
36
|
-
# rubocop:enable
|
|
36
|
+
# rubocop:enable Layout/LineLength, Metrics/AbcSize
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
# @return [Qonfig::CommandSet]
|
|
@@ -8,8 +8,14 @@ class Qonfig::Plugins::PrettyPrint < Qonfig::Plugins::Abstract
|
|
|
8
8
|
#
|
|
9
9
|
# @api private
|
|
10
10
|
# @since 0.19.0
|
|
11
|
-
# @version 0.
|
|
11
|
+
# @version 0.24.0
|
|
12
12
|
def install!
|
|
13
|
+
# :nocov:
|
|
14
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.0')
|
|
15
|
+
require_relative 'pretty_print/ruby_2_7_basic_object_pp_patch'
|
|
16
|
+
end
|
|
17
|
+
# :nocov:
|
|
18
|
+
|
|
13
19
|
require_relative 'pretty_print/mixin'
|
|
14
20
|
require_relative 'pretty_print/data_set'
|
|
15
21
|
require_relative 'pretty_print/settings'
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# NOTE: why not `.prepend` ?
|
|
4
|
+
# `prepend` in this case works incorrectly and sometimes this patch can not be correctly
|
|
5
|
+
# injected to the original module and it's children ancestors (Ruby-specific behaviour of
|
|
6
|
+
# module including and prepending).
|
|
7
|
+
|
|
8
|
+
# @api public
|
|
9
|
+
# @since 0.24.0
|
|
10
|
+
module PP::PPMethods
|
|
11
|
+
# :nocov:
|
|
12
|
+
def pp(obj)
|
|
13
|
+
# If obj is a Delegator then use the object being delegated to for cycle
|
|
14
|
+
# detection
|
|
15
|
+
|
|
16
|
+
# NOTE: --- PATCH ---
|
|
17
|
+
if defined?(::Delegator) and (
|
|
18
|
+
begin
|
|
19
|
+
(class << obj; self; end) <= ::Delegator # patch
|
|
20
|
+
rescue ::TypeError
|
|
21
|
+
obj.is_a?(::Delegator)
|
|
22
|
+
end
|
|
23
|
+
)
|
|
24
|
+
obj = obj.__getobj__
|
|
25
|
+
end # instead of: obj = obj.__getobj__ if defined?(::Delegator) and obj.is_a?(::Delegator)
|
|
26
|
+
# NOTE:
|
|
27
|
+
# Old implementation can not be used with BasicObject instances
|
|
28
|
+
# (with Qonfig::Compacted in our case)
|
|
29
|
+
# NOTE: --- PATCH ---
|
|
30
|
+
|
|
31
|
+
if check_inspect_key(obj)
|
|
32
|
+
group { obj.pretty_print_cycle self }
|
|
33
|
+
return
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
begin
|
|
37
|
+
push_inspect_key(obj)
|
|
38
|
+
group { obj.pretty_print self }
|
|
39
|
+
ensure
|
|
40
|
+
pop_inspect_key(obj) unless PP.sharing_detection
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
# :nocov:
|
|
44
|
+
end
|
data/lib/qonfig/settings.rb
CHANGED
|
@@ -217,7 +217,7 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
|
|
|
217
217
|
#
|
|
218
218
|
# @api private
|
|
219
219
|
# @since 0.1.0
|
|
220
|
-
# rubocop:disable
|
|
220
|
+
# rubocop:disable Layout/LineLength
|
|
221
221
|
def __to_hash__(transform_key: BASIC_SETTING_KEY_TRANSFORMER, transform_value: BASIC_SETTING_VALUE_TRANSFORMER)
|
|
222
222
|
unless transform_key.is_a?(Proc)
|
|
223
223
|
::Kernel.raise(Qonfig::IncorrectKeyTransformerError, 'Key transformer should be a type of proc')
|
|
@@ -231,7 +231,7 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
|
|
|
231
231
|
__build_hash_representation__(transform_key: transform_key, transform_value: transform_value)
|
|
232
232
|
end
|
|
233
233
|
end
|
|
234
|
-
# rubocop:enable
|
|
234
|
+
# rubocop:enable Layout/LineLength
|
|
235
235
|
alias_method :__to_h__, :__to_hash__
|
|
236
236
|
|
|
237
237
|
# @option all_variants [Boolean]
|
|
@@ -47,7 +47,7 @@ class Qonfig::Uploaders::YAML < Qonfig::Uploaders::File
|
|
|
47
47
|
# @since 0.11.0
|
|
48
48
|
def represent_settings(settings, options, &value_processor)
|
|
49
49
|
settings_hash_opts = hash_representation_options(options, &value_processor)
|
|
50
|
-
settings_hash = settings.__to_hash__(settings_hash_opts)
|
|
50
|
+
settings_hash = settings.__to_hash__(**settings_hash_opts)
|
|
51
51
|
to_yaml_string(settings_hash, options)
|
|
52
52
|
end
|
|
53
53
|
|
data/lib/qonfig/version.rb
CHANGED
data/qonfig.gemspec
CHANGED
|
@@ -29,12 +29,11 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
f.match(%r{^(test|spec|features)/})
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
spec.add_development_dependency '
|
|
33
|
-
spec.add_development_dependency '
|
|
34
|
-
spec.add_development_dependency '
|
|
35
|
-
spec.add_development_dependency 'armitage-rubocop', '~> 0.77'
|
|
32
|
+
spec.add_development_dependency 'simplecov', '~> 0.17'
|
|
33
|
+
spec.add_development_dependency 'rspec', '~> 3.9'
|
|
34
|
+
spec.add_development_dependency 'armitage-rubocop', '~> 0.78'
|
|
36
35
|
|
|
37
36
|
spec.add_development_dependency 'bundler'
|
|
38
|
-
spec.add_development_dependency 'rake'
|
|
37
|
+
spec.add_development_dependency 'rake', '>= 13'
|
|
39
38
|
spec.add_development_dependency 'pry'
|
|
40
39
|
end
|
metadata
CHANGED
|
@@ -1,71 +1,57 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: qonfig
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.24.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rustam Ibragimov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-12-
|
|
11
|
+
date: 2019-12-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: coveralls
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0.8'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0.8'
|
|
27
13
|
- !ruby/object:Gem::Dependency
|
|
28
14
|
name: simplecov
|
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
|
30
16
|
requirements:
|
|
31
17
|
- - "~>"
|
|
32
18
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0.
|
|
19
|
+
version: '0.17'
|
|
34
20
|
type: :development
|
|
35
21
|
prerelease: false
|
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
23
|
requirements:
|
|
38
24
|
- - "~>"
|
|
39
25
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0.
|
|
26
|
+
version: '0.17'
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: rspec
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
44
30
|
requirements:
|
|
45
31
|
- - "~>"
|
|
46
32
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '3.
|
|
33
|
+
version: '3.9'
|
|
48
34
|
type: :development
|
|
49
35
|
prerelease: false
|
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
37
|
requirements:
|
|
52
38
|
- - "~>"
|
|
53
39
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '3.
|
|
40
|
+
version: '3.9'
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
42
|
name: armitage-rubocop
|
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
|
58
44
|
requirements:
|
|
59
45
|
- - "~>"
|
|
60
46
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0.
|
|
47
|
+
version: '0.78'
|
|
62
48
|
type: :development
|
|
63
49
|
prerelease: false
|
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
51
|
requirements:
|
|
66
52
|
- - "~>"
|
|
67
53
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0.
|
|
54
|
+
version: '0.78'
|
|
69
55
|
- !ruby/object:Gem::Dependency
|
|
70
56
|
name: bundler
|
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -86,14 +72,14 @@ dependencies:
|
|
|
86
72
|
requirements:
|
|
87
73
|
- - ">="
|
|
88
74
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
75
|
+
version: '13'
|
|
90
76
|
type: :development
|
|
91
77
|
prerelease: false
|
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
79
|
requirements:
|
|
94
80
|
- - ">="
|
|
95
81
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
82
|
+
version: '13'
|
|
97
83
|
- !ruby/object:Gem::Dependency
|
|
98
84
|
name: pry
|
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -183,6 +169,7 @@ files:
|
|
|
183
169
|
- lib/qonfig/plugins/pretty_print/compacted.rb
|
|
184
170
|
- lib/qonfig/plugins/pretty_print/data_set.rb
|
|
185
171
|
- lib/qonfig/plugins/pretty_print/mixin.rb
|
|
172
|
+
- lib/qonfig/plugins/pretty_print/ruby_2_7_basic_object_pp_patch.rb
|
|
186
173
|
- lib/qonfig/plugins/pretty_print/settings.rb
|
|
187
174
|
- lib/qonfig/plugins/registry.rb
|
|
188
175
|
- lib/qonfig/plugins/toml.rb
|
|
@@ -244,8 +231,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
244
231
|
- !ruby/object:Gem::Version
|
|
245
232
|
version: '0'
|
|
246
233
|
requirements: []
|
|
247
|
-
|
|
248
|
-
rubygems_version: 2.7.6
|
|
234
|
+
rubygems_version: 3.1.2
|
|
249
235
|
signing_key:
|
|
250
236
|
specification_version: 4
|
|
251
237
|
summary: Config object
|