k_config 0.0.2 → 0.0.6

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: 53af9d714dc548d9c4c29abe2876d9e380809e3ef4eb871d013a048d4eee4dc7
4
- data.tar.gz: ec8252bd1ab496b402ebcc73dec9d748128d52b64b726df986593b6a78857616
3
+ metadata.gz: be6c1f47d8c6aaf2d67dbab345553d77b26d2bbc501dc12f8e756c7c833db264
4
+ data.tar.gz: 82dda6d6aa206e3d3e6a6c56481b3519a38069c27155c3a9decadaea2a2b79fd
5
5
  SHA512:
6
- metadata.gz: f3d7d67c59e8c52840305f94756b17443d87412e70b44b06e9beaf4aeb5ff1cd85e30d2a20a367d5c4d80212293d5ea460cc840e793cb798d9d6936870094fa4
7
- data.tar.gz: aab511ef8002737664a495bf892aa9d8b6bcdda08f8116518a8a5ecaaf59c5a080c1cc377b9189200d2e020996eb8f2839913183a554991425b717a1dc9e9931
6
+ metadata.gz: 8ce80196bebde6e003279ee8b911b248da17842af31fc3848c7699888d908794a40b0de4cd4fd37f7116f276b7f18d3a45873edc3f66042d224cfd765ffbadb0
7
+ data.tar.gz: d79ec61cbf83797f0dbc60e13fc01c3a4ba3b415cd7a113575154453929d47e1ae2544d48d703ca5789f83240a3542a5d4fabb4e2220f0bd28ecf45b98c7d292
data/docs/CHANGELOG.md ADDED
@@ -0,0 +1,30 @@
1
+ ## [0.0.5](https://github.com/klueless-io/k_config/compare/v0.0.4...v0.0.5) (2022-02-04)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add registered extensions and support for debug and initialize_copy inside of registered extensions ([da0d62d](https://github.com/klueless-io/k_config/commit/da0d62dcd6b4d1c4f556e2bccf6bde56a06baf8c))
7
+ * add registered extensions and support for debug and initialize_copy inside of registered extensions ([ce35adb](https://github.com/klueless-io/k_config/commit/ce35adb700c16e189da7a70d9aa206a91f629f99))
8
+ * flakey test ([ca87322](https://github.com/klueless-io/k_config/commit/ca873225580d406c0a2dc8709f04a9dd223b5c23))
9
+
10
+ ## [0.0.4](https://github.com/klueless-io/k_config/compare/v0.0.3...v0.0.4) (2022-02-04)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * add custom debug support ([5e1c344](https://github.com/klueless-io/k_config/commit/5e1c34444a23b7e3e9d50106524ed055e50d2d9b))
16
+
17
+ ## [0.0.3](https://github.com/klueless-io/k_config/compare/v0.0.2...v0.0.3) (2022-02-04)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * update gem dependancies ([6de42d0](https://github.com/klueless-io/k_config/commit/6de42d0d94b447a4a246a8889b4e5c88af3427f2))
23
+
24
+ ## [0.0.2](https://github.com/klueless-io/k_config/compare/v0.0.1...v0.0.2) (2022-02-04)
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * github actions (ci/cd) ([ddde14c](https://github.com/klueless-io/k_config/commit/ddde14c614eaf904cc15dc4dc5e2131e1c6ce620))
30
+ * github actions (ci/cd) ([2cfd62d](https://github.com/klueless-io/k_config/commit/2cfd62d6c4031008107366efc1fd88c78136fbc4))
data/k_config.gemspec CHANGED
@@ -42,6 +42,6 @@ Gem::Specification.new do |spec|
42
42
  }
43
43
 
44
44
  spec.add_dependency 'k_log', '~> 0.0.0'
45
- # spec.add_dependency 'k_type', '~> 0.0.0'
46
- # spec.add_dependency 'k_util', '~> 0.0.0'
45
+ spec.add_dependency 'k_type', '~> 0.0.0'
46
+ spec.add_dependency 'k_util', '~> 0.0.0'
47
47
  end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KConfig
4
+ # Configuration object for all k_* GEMs.
5
+ #
6
+ # Hooks:
7
+ # You can use hooks to add your own customizations to configuration extensions.
8
+ class Configuration
9
+ include KUtil::Data::InstanceVariablesToH
10
+ include KLog::Logging
11
+
12
+ attr_accessor :config_name
13
+
14
+ # Initialize configuration.
15
+ #
16
+ # Will call #{configuration_key}_initialize method if it exists.
17
+ def initialize
18
+ self.class.registered_keys.each do |key|
19
+ method = "#{key}_initialize".to_sym
20
+ send(method) if respond_to?(method)
21
+ end
22
+ end
23
+
24
+ # Debug configuration is used for debugging.
25
+ #
26
+ # Will call #{configuration_key}_debug method if it exists.
27
+ def debug
28
+ log.section_heading(config_name) if config_name
29
+
30
+ self.class.registered_keys.each do |key|
31
+ method = "#{key}_debug".to_sym
32
+ send(method) if respond_to?(method)
33
+ end
34
+ end
35
+
36
+ # Initialize_copy, used during clone.
37
+ #
38
+ # Will call #{configuration_key}_initialize_copy method if it exists.
39
+ def initialize_copy(orig)
40
+ self.class.registered_keys.each do |key|
41
+ method = "#{key}_initialize_copy".to_sym
42
+ send(method, orig) if respond_to?(method)
43
+ end
44
+ end
45
+
46
+ class << self
47
+ def registered_keys
48
+ @registered_keys ||= []
49
+ end
50
+
51
+ # Register configuration extension key
52
+ #
53
+ # This key provides a unique method name prefix to common methods such as debug and initialize_copy
54
+ def register(key, extension)
55
+ if registered_keys.include?(key)
56
+ puts "Key #{key} already registered ... skipping"
57
+ return registered_keys
58
+ end
59
+
60
+ include(extension)
61
+ registered_keys << key
62
+ end
63
+ end
64
+ end
65
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KConfig
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.6'
5
5
  end
data/lib/k_config.rb CHANGED
@@ -1,12 +1,47 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'k_log'
4
+ require 'k_type'
5
+
3
6
  require_relative 'k_config/version'
7
+ require_relative 'k_config/configuration'
4
8
 
9
+ # KConfig is a configuration helper for k_* GEMs.
5
10
  module KConfig
6
11
  # raise KConfig::Error, 'Sample message'
7
12
  Error = Class.new(StandardError)
8
13
 
9
- # Your code goes here...
14
+ # Configuration helpers
15
+ class << self
16
+ attr_writer :configuration
17
+ attr_writer :default_configuration_type
18
+
19
+ def default_configuration_type
20
+ @default_configuration_type ||= KConfig::Configuration
21
+ end
22
+
23
+ def configuration(config_name = :default)
24
+ @configuration ||= Hash.new do |h, key|
25
+ h[key] = default_configuration_type.new
26
+ end
27
+ config = @configuration[config_name]
28
+ config.config_name = config_name if config.respond_to?(:config_name) && config.config_name.nil?
29
+ config
30
+ end
31
+
32
+ def reset(config_name = :default)
33
+ @configuration ||= Hash.new do |h, key|
34
+ h[key] = default_configuration_type.new
35
+ end
36
+ config = default_configuration_type.new
37
+ config.config_name = config_name if config.respond_to?(:config_name) && config.config_name.nil?
38
+ @configuration[config_name] = config
39
+ end
40
+
41
+ def configure(config_name = :default)
42
+ yield(configuration(config_name))
43
+ end
44
+ end
10
45
  end
11
46
 
12
47
  if ENV['KLUE_DEBUG']&.to_s&.downcase == 'true'
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "k_config",
3
- "version": "0.0.2",
3
+ "version": "0.0.6",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "k_config",
9
- "version": "0.0.2",
9
+ "version": "0.0.6",
10
10
  "devDependencies": {
11
11
  "@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
12
12
  "@semantic-release/changelog": "^6.0.1",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "k_config",
3
- "version": "0.0.2",
3
+ "version": "0.0.6",
4
4
  "description": "Command line and CI/CD tools for K Config",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-04 00:00:00.000000000 Z
11
+ date: 2022-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: k_log
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: k_type
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: k_util
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.0.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.0
27
55
  description: " KConfig provides configuration for multi-plugin architecture\n"
28
56
  email:
29
57
  - david@ideasmen.com.au
@@ -49,10 +77,12 @@ files:
49
77
  - Rakefile
50
78
  - bin/console
51
79
  - bin/setup
80
+ - docs/CHANGELOG.md
52
81
  - docs/CODE_OF_CONDUCT.md
53
82
  - docs/LICENSE.txt
54
83
  - k_config.gemspec
55
84
  - lib/k_config.rb
85
+ - lib/k_config/configuration.rb
56
86
  - lib/k_config/version.rb
57
87
  - package-lock.json
58
88
  - package.json