qonfig 0.16.0 → 0.17.0

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