qonfig 0.16.0 → 0.17.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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -1
  3. data/.travis.yml +6 -6
  4. data/CHANGELOG.md +17 -0
  5. data/README.md +630 -49
  6. data/gemfiles/with_external_deps.gemfile +2 -2
  7. data/lib/qonfig/commands/{add_nested_option.rb → definition/add_nested_option.rb} +1 -1
  8. data/lib/qonfig/commands/{add_option.rb → definition/add_option.rb} +1 -1
  9. data/lib/qonfig/commands/{compose.rb → definition/compose.rb} +1 -1
  10. data/lib/qonfig/commands/{expose_json.rb → definition/expose_json.rb} +1 -1
  11. data/lib/qonfig/commands/{expose_self.rb → definition/expose_self.rb} +1 -1
  12. data/lib/qonfig/commands/{expose_yaml.rb → definition/expose_yaml.rb} +1 -1
  13. data/lib/qonfig/commands/definition/load_from_env/value_converter.rb +82 -0
  14. data/lib/qonfig/commands/{load_from_env.rb → definition/load_from_env.rb} +1 -1
  15. data/lib/qonfig/commands/{load_from_json.rb → definition/load_from_json.rb} +1 -1
  16. data/lib/qonfig/commands/{load_from_self.rb → definition/load_from_self.rb} +1 -1
  17. data/lib/qonfig/commands/{load_from_yaml.rb → definition/load_from_yaml.rb} +1 -1
  18. data/lib/qonfig/commands/definition.rb +16 -0
  19. data/lib/qonfig/commands/instantiation/values_file.rb +171 -0
  20. data/lib/qonfig/commands/instantiation.rb +7 -0
  21. data/lib/qonfig/commands.rb +2 -10
  22. data/lib/qonfig/data_set/lock.rb +61 -4
  23. data/lib/qonfig/data_set.rb +151 -3
  24. data/lib/qonfig/dsl.rb +56 -16
  25. data/lib/qonfig/errors.rb +38 -11
  26. data/lib/qonfig/loaders/dynamic.rb +52 -0
  27. data/lib/qonfig/loaders/json.rb +6 -0
  28. data/lib/qonfig/loaders/yaml.rb +13 -0
  29. data/lib/qonfig/loaders.rb +3 -0
  30. data/lib/qonfig/plugins/toml/data_set.rb +13 -0
  31. data/lib/qonfig/plugins/toml/dsl.rb +6 -2
  32. data/lib/qonfig/plugins/toml/errors.rb +12 -0
  33. data/lib/qonfig/plugins/toml/loaders/dynamic.rb +31 -0
  34. data/lib/qonfig/plugins/toml/loaders/toml.rb +6 -0
  35. data/lib/qonfig/plugins/toml.rb +2 -0
  36. data/lib/qonfig/settings/builder.rb +1 -1
  37. data/lib/qonfig/settings.rb +21 -0
  38. data/lib/qonfig/validator/basic.rb +9 -1
  39. data/lib/qonfig/validator/builder/attribute_consistency.rb +29 -0
  40. data/lib/qonfig/validator/builder.rb +39 -14
  41. data/lib/qonfig/validator/dsl.rb +9 -1
  42. data/lib/qonfig/validator/method_based.rb +4 -2
  43. data/lib/qonfig/validator/predefined/common.rb +4 -2
  44. data/lib/qonfig/validator/predefined/registry.rb +0 -2
  45. data/lib/qonfig/validator/predefined/registry_control_mixin.rb +3 -2
  46. data/lib/qonfig/validator/proc_based.rb +4 -2
  47. data/lib/qonfig/version.rb +1 -1
  48. data/qonfig.gemspec +1 -1
  49. metadata +21 -15
  50. data/lib/qonfig/commands/load_from_env/value_converter.rb +0 -84
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d31eafd74da18cba4ef82848b5046df61c5804a1913b5355b76a31a35baaede0
4
- data.tar.gz: 6b8d69f450b342d5a825de242fff11c016aadbcd0063c801e7d07e7c28508110
3
+ metadata.gz: 985bd788cc637ab9a63a813e1a9a59510d4ea093c2d45101962fb28804688510
4
+ data.tar.gz: 39018ae2f6eedb1049736164f00bb34abffe64fa045858e3908054099e83b66a
5
5
  SHA512:
6
- metadata.gz: '08ad599216433bc7e81a679d02d2cfd81162ca1895698f3086a174e559744c816cc3a171be925846ad3e84cee5234eb4e9701acc8be13323d1e24eab3572f893'
7
- data.tar.gz: 3d83aaa571007f9502810f58d1eecdcaa92a0a5a202708ef35191f39f5c283f923a3c87ba91d5aaf4b42e3c45a9ade01a70eb53a843d53ed88f0ab4ef317e775
6
+ metadata.gz: 51aa8022ab1a25cafc4dd68f740b2aa4edcc63e8b1c58aa95863c12ce288d6da74c177f764cfc5a829cb0d46bff1699afb4a87d1df93ea780c345ad0e452b9b2
7
+ data.tar.gz: 0d946fc7542ac3816bbf3e00f73a386e3178195bb2281a26d52e75c7b3bd57fe810213d8109c5d45db3d6713bfacb65603bc6373e593572a70d012ff3cea8c40
data/.rubocop.yml CHANGED
@@ -4,7 +4,7 @@ inherit_gem:
4
4
  - lib/rubocop.rspec.yml
5
5
 
6
6
  AllCops:
7
- TargetRubyVersion: 2.6.4
7
+ TargetRubyVersion: 2.6.5
8
8
  Include:
9
9
  - lib/**/*.rb
10
10
  - spec/**/*.rb
@@ -17,3 +17,7 @@ AllCops:
17
17
  # NOTE: for code clarity in tests
18
18
  RSpec/LeakyConstantDeclaration:
19
19
  Enabled: false
20
+
21
+ # NOTE: support for old ruby versions
22
+ Style/RedundantBegin:
23
+ Enabled: false
data/.travis.yml CHANGED
@@ -5,13 +5,13 @@ matrix:
5
5
  - rvm: 2.3.8
6
6
  gemfile: gemfiles/with_external_deps.gemfile
7
7
  env: TEST_PLUGINS=true
8
- - rvm: 2.4.7
8
+ - rvm: 2.4.9
9
9
  gemfile: gemfiles/with_external_deps.gemfile
10
10
  env: TEST_PLUGINS=true
11
- - rvm: 2.5.6
11
+ - rvm: 2.5.7
12
12
  gemfile: gemfiles/with_external_deps.gemfile
13
13
  env: TEST_PLUGINS=true
14
- - rvm: 2.6.4
14
+ - rvm: 2.6.5
15
15
  gemfile: gemfiles/with_external_deps.gemfile
16
16
  env: TEST_PLUGINS=true
17
17
  - rvm: ruby-head
@@ -22,11 +22,11 @@ matrix:
22
22
  env: TEST_PLUGINS=true
23
23
  - rvm: 2.3.8
24
24
  gemfile: gemfiles/without_external_deps.gemfile
25
- - rvm: 2.4.7
25
+ - rvm: 2.4.9
26
26
  gemfile: gemfiles/without_external_deps.gemfile
27
- - rvm: 2.5.6
27
+ - rvm: 2.5.7
28
28
  gemfile: gemfiles/without_external_deps.gemfile
29
- - rvm: 2.6.4
29
+ - rvm: 2.6.5
30
30
  gemfile: gemfiles/without_external_deps.gemfile
31
31
  - rvm: ruby-head
32
32
  gemfile: gemfiles/without_external_deps.gemfile
data/CHANGELOG.md CHANGED
@@ -1,6 +1,23 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [Unreleased]
5
+ ### Added
6
+ - Introduce `strict` validations: `strict: false` option ignores `nil` values and used by default;
7
+ - Setting's key existence check methods: `#key?(*key_path)`, `#setting?(*key_path)`, `#option?(*key_path)`;
8
+ - `#with(temporary_configurations = {}, &arbitary_code)` - run arbitary code with temporary settings;
9
+ - `TOML` plugin: support for TOML version 0.5.0;
10
+ - Introduce instance-level file loading methods that specifies a file with setting values for your defined settings:
11
+ - `.values_file` - define a file that will be used during instantiation process;
12
+ - `#load_from_file`, `#load_from_self`, `#load_from_yaml`, `#load_from_json`, `#load_from_toml` (toml plugin) -
13
+ instance methods for loading setting values on your config instance directly from a file;
14
+
15
+ ### Changed
16
+ - `Qonfig::DataSet.build` now supports a Qonfig::DataSet-class attribute that should be inherited (`self` is used by default):
17
+ - new signature: `Qonfig::DataSet.build(base_config_klass = self, &config_class_definitions)`;
18
+ - Refacored DSL commands: introduce `Qonfig::Commands::Definition` commands and `Qonfig::Commands::Instantiation` commands;
19
+ - Updated runtime (`toml-rb` `1` -> `2`) and development dependencies;
20
+
4
21
  ## [0.16.0] - 2019-09-13
5
22
  ### Added
6
23
  - `Qonfig::DataSet.build(&config_klass_definitions)` - build config instance immidietly without `Qonfig::DataSet`-class definition;