const_conf 0.5.0 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20b3d110806cb0cab793f81c1c2f5caf027cc8cab072154030524a1fffb147c2
4
- data.tar.gz: 9af6c5ad81b643d069b5094a5663ef818f34b2b59641346c0251c47560301b56
3
+ metadata.gz: 75174c5894d1b360f0479a75f47121b16ea7cfd8d3bf92b6d6c886eb41620459
4
+ data.tar.gz: b8fcd102d3c0287854d4e5dc26b137840a5ff36596096d740b60830bdc7cc4c0
5
5
  SHA512:
6
- metadata.gz: 19a8afc56213a644542b9b21946e4d6630ef7d9cca2cfa393f9a943f1733adce3d962b7d07f3b137fd33061a4c95d64d67c0789a10d02a6dde9ce2fd210503ff
7
- data.tar.gz: 4cf7e96d1be6958b2f18eeeb8944120b15f0e429ae2a8ff6693cf0e659d342f2602f3ec5079b618aabec7febbca8ec7dc60b5768dc34ea5e307489b9823abc80
6
+ metadata.gz: 226ffb061d21faed487ba07e44a95f6a352b3da9fc38fdde00be4a15c6e5721cad0f436f85fea82d2f553b4a172335d3b6b6eca5578b84481d968f8130a29770
7
+ data.tar.gz: bd2d8a7cacff72d4f6d460120b3b85407863fdd451a35cf3a848f5c2bf98807b3b0d3c17cb9451e79321a4feda4b375778fac1c4996a73da916ad89f9f666ef3
data/CHANGES.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changes
2
2
 
3
+ ## 2026-01-27 v0.6.0
4
+
5
+ - Added `documentation` method to `ConstConf` module that generates Markdown
6
+ documentation
7
+ - Method supports both string return and IO writing modes via `io:` parameter
8
+ - Handles sensitive values by redacting them with `_redacted_`
9
+ - Includes default value handling with `_undefined_` for nil defaults
10
+ - Method produces output suitable for README files and documentation
11
+ - Added comprehensive tests for the new `documentation` method
12
+ - Method integrates with existing `env_var_names` and `setting_for` infrastructure
13
+ - Supports `ConstConf::Setting` objects with proper description and default value handling
14
+ - Updated CI configuration
15
+ - Use `bundle exec rake spec` instead of `rake spec`
16
+ - Added `before` and `after` hooks in CI script to remove `Gemfile.lock` during runs
17
+ - Added `changelog` configuration block to specify `CHANGES.md` as the changelog filename
18
+ - Updated `all_images` gem dependency from version **0.8** to **>= 0.12**
19
+ - Updated `gem_hadar` development dependency from **2.16.3** to **2.17.0**
20
+ - Updated Ruby version from 4.0-rc-alpine to 4.0-alpine
21
+ - Updated rubygems version to **4.0.3**
22
+ - Simplified environment variable handling logic
23
+
3
24
  ## 2025-12-19 v0.5.0
4
25
 
5
26
  - Added `ruby:4.0-rc-alpine` image to test matrix in `.all_images.yml`
data/Rakefile CHANGED
@@ -21,6 +21,10 @@ GemHadar do
21
21
  '.contexts', '.github'
22
22
  readme 'README.md'
23
23
 
24
+ changelog do
25
+ filename 'CHANGES.md'
26
+ end
27
+
24
28
  github_workflows(
25
29
  'static.yml' => {}
26
30
  )
@@ -34,8 +38,8 @@ GemHadar do
34
38
  development_dependency 'debug'
35
39
  development_dependency 'rspec', '~> 3.13'
36
40
  development_dependency 'context_spook', '~> 0.4'
37
- development_dependency 'all_images', '~> 0.8'
38
41
  development_dependency 'simplecov', '~> 0.22'
42
+ development_dependency 'all_images', '>= 0.12'
39
43
 
40
44
  licenses << 'MIT'
41
45
  end
data/const_conf.gemspec CHANGED
@@ -1,9 +1,9 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: const_conf 0.5.0 ruby lib
2
+ # stub: const_conf 0.6.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "const_conf".freeze
6
- s.version = "0.5.0".freeze
6
+ s.version = "0.6.0".freeze
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
@@ -17,18 +17,18 @@ Gem::Specification.new do |s|
17
17
  s.licenses = ["MIT".freeze]
18
18
  s.rdoc_options = ["--title".freeze, "ConstConf - Clean DSL for config settings with validation and Rails integration".freeze, "--main".freeze, "README.md".freeze]
19
19
  s.required_ruby_version = Gem::Requirement.new(">= 3.2".freeze)
20
- s.rubygems_version = "4.0.2".freeze
20
+ s.rubygems_version = "4.0.3".freeze
21
21
  s.summary = "Clean DSL for config settings with validation and Rails integration".freeze
22
22
  s.test_files = ["spec/const_conf/dir_plugin_spec.rb".freeze, "spec/const_conf/env_dir_extension_spec.rb".freeze, "spec/const_conf/file_plugin_spec.rb".freeze, "spec/const_conf/json_plugin_spec.rb".freeze, "spec/const_conf/setting_accessor_spec.rb".freeze, "spec/const_conf/setting_spec.rb".freeze, "spec/const_conf/tree_spec.rb".freeze, "spec/const_conf/yaml_plugin_spec.rb".freeze, "spec/const_conf_spec.rb".freeze, "spec/spec_helper.rb".freeze]
23
23
 
24
24
  s.specification_version = 4
25
25
 
26
- s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 2.10".freeze])
26
+ s.add_development_dependency(%q<gem_hadar>.freeze, [">= 2.17.0".freeze])
27
27
  s.add_development_dependency(%q<debug>.freeze, [">= 0".freeze])
28
28
  s.add_development_dependency(%q<rspec>.freeze, ["~> 3.13".freeze])
29
29
  s.add_development_dependency(%q<context_spook>.freeze, ["~> 0.4".freeze])
30
- s.add_development_dependency(%q<all_images>.freeze, ["~> 0.8".freeze])
31
30
  s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.22".freeze])
31
+ s.add_development_dependency(%q<all_images>.freeze, [">= 0.12".freeze])
32
32
  s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.43".freeze])
33
33
  s.add_runtime_dependency(%q<json>.freeze, ["~> 2.0".freeze])
34
34
  s.add_runtime_dependency(%q<complex_config>.freeze, ["~> 0.23".freeze])
@@ -247,8 +247,6 @@ class ConstConf::Setting
247
247
  def configured_value
248
248
  if ignored
249
249
  nil
250
- elsif env_var.nil?
251
- nil
252
250
  else
253
251
  env_var
254
252
  end
@@ -1,6 +1,6 @@
1
1
  module ConstConf
2
2
  # ConstConf version
3
- VERSION = '0.5.0'
3
+ VERSION = '0.6.0'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
data/lib/const_conf.rb CHANGED
@@ -424,6 +424,38 @@ module ConstConf
424
424
  end
425
425
  end
426
426
 
427
+ # Generates documentation for all configuration settings as a Markdown
428
+ # table
429
+ #
430
+ # This method provides a Markdown-formatted list showing all configuration
431
+ # settings with their environment variable names, descriptions, default
432
+ # values, and required status. The output is suitable for inclusion in
433
+ # README files or documentation.
434
+ #
435
+ # @param io [IO, nil] the IO object to write the documentation to; if nil, returns a String
436
+ # @return [String, nil] the Markdown documentation as a string if io is nil, nil otherwise
437
+ def documentation(io: nil)
438
+ result = io || +''
439
+ result << "## Environment variables\n\n"
440
+
441
+ env_var_names.map do |env_var_name|
442
+ setting_for(env_var_name)
443
+ end.each do |setting|
444
+ default = if setting.sensitive?
445
+ '_redacted_'
446
+ elsif setting.default_value.nil?
447
+ '_undefined_'
448
+ else
449
+ "`#{setting.default_value.inspect}`"
450
+ end
451
+ result << " - `#{setting.env_var_name}`\n"
452
+ result << " - __description__: #{setting.description}\n"
453
+ result << " - __default__: #{default}\n"
454
+ end
455
+
456
+ result
457
+ end
458
+
427
459
  # Iterates over a configuration module and its nested configurations in a
428
460
  # depth-first manner.
429
461
  #
@@ -256,14 +256,37 @@ describe ConstConf do
256
256
  expect(TestConstConf.setting_for('TEST_CONST_CONF_TEST').value).
257
257
  to eq 'bar'
258
258
  end
259
+ end
259
260
 
260
- describe '.view' do
261
- it 'renders tree view' do
262
- expect(ConstConf::Tree).to receive(:from_const_conf).with(
263
- TestConstConf
264
- )
265
- TestConstConf.view
266
- end
261
+ describe '.view' do
262
+ it 'renders tree view' do
263
+ expect(ConstConf::Tree).to receive(:from_const_conf).with(
264
+ TestConstConf
265
+ )
266
+ TestConstConf.view
267
+ end
268
+ end
269
+
270
+ describe '.documentation' do
271
+ it 'generates markdown documentation' do
272
+ doc = TestConstConf.documentation
273
+ expect(doc).to be_a String
274
+ expect(doc).to include('## Environment variables')
275
+ expect(doc).to include('`TEST_CONST_CONF_TEST`')
276
+ expect(doc).to match(/description.*?test/)
277
+ expect(doc).to match(/default.*?bar/)
278
+ end
279
+
280
+ it 'writes documentation to IO object' do
281
+ io = StringIO.new
282
+ result = TestConstConf.documentation(io: io)
283
+
284
+ expect(result).to be_a StringIO
285
+ doc = io.string
286
+ expect(doc).to include('## Environment variables')
287
+ expect(doc).to include('`TEST_CONST_CONF_TEST`')
288
+ expect(doc).to match(/description.*?test/)
289
+ expect(doc).to match(/default.*?bar/)
267
290
  end
268
291
  end
269
292
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: const_conf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
@@ -13,16 +13,16 @@ dependencies:
13
13
  name: gem_hadar
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '2.10'
18
+ version: 2.17.0
19
19
  type: :development
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - "~>"
23
+ - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '2.10'
25
+ version: 2.17.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: debug
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -66,33 +66,33 @@ dependencies:
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0.4'
68
68
  - !ruby/object:Gem::Dependency
69
- name: all_images
69
+ name: simplecov
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.8'
74
+ version: '0.22'
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.8'
81
+ version: '0.22'
82
82
  - !ruby/object:Gem::Dependency
83
- name: simplecov
83
+ name: all_images
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '0.22'
88
+ version: '0.12'
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: '0.22'
95
+ version: '0.12'
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: tins
98
98
  requirement: !ruby/object:Gem::Requirement
@@ -229,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
229
  - !ruby/object:Gem::Version
230
230
  version: '0'
231
231
  requirements: []
232
- rubygems_version: 4.0.2
232
+ rubygems_version: 4.0.3
233
233
  specification_version: 4
234
234
  summary: Clean DSL for config settings with validation and Rails integration
235
235
  test_files: