legion-settings 1.3.14 → 1.3.16
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/.github/CODEOWNERS +6 -0
- data/.github/dependabot.yml +18 -0
- data/.github/workflows/ci.yml +20 -2
- data/CHANGELOG.md +15 -0
- data/lib/legion/settings/loader.rb +24 -1
- data/lib/legion/settings/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4263d479bb6b10a4fad1e5e0337153a8ff3f4ae6ff29beaf1089968e70b15f0c
|
|
4
|
+
data.tar.gz: 3f760ac986406ee7bd6ea9bdad044674e9e591936a01db682c315e63c9d52dfd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3739c42b861c346d5e5915680bcd2a80277e9ecc77ca784106051003e7a03af6720e348a291c689b9f66ac5611bb4d74b41c24f5b5abbb1182493661d172bbfe
|
|
7
|
+
data.tar.gz: 2c1710786b2786c4ba263a7eb49d67701d20ad332245a99fa8fee2b28ce128faeffc0895efe52af0bc4512a4e2fc0dc068f0f2db71e0a6c3b8334bd664c8aaf0
|
data/.github/CODEOWNERS
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: bundler
|
|
4
|
+
directory: /
|
|
5
|
+
schedule:
|
|
6
|
+
interval: weekly
|
|
7
|
+
day: monday
|
|
8
|
+
open-pull-requests-limit: 5
|
|
9
|
+
labels:
|
|
10
|
+
- "type:dependencies"
|
|
11
|
+
- package-ecosystem: github-actions
|
|
12
|
+
directory: /
|
|
13
|
+
schedule:
|
|
14
|
+
interval: weekly
|
|
15
|
+
day: monday
|
|
16
|
+
open-pull-requests-limit: 5
|
|
17
|
+
labels:
|
|
18
|
+
- "type:dependencies"
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -3,14 +3,32 @@ on:
|
|
|
3
3
|
push:
|
|
4
4
|
branches: [main]
|
|
5
5
|
pull_request:
|
|
6
|
+
schedule:
|
|
7
|
+
- cron: '0 9 * * 1'
|
|
6
8
|
|
|
7
9
|
jobs:
|
|
8
10
|
ci:
|
|
9
11
|
uses: LegionIO/.github/.github/workflows/ci.yml@main
|
|
10
12
|
|
|
13
|
+
lint:
|
|
14
|
+
uses: LegionIO/.github/.github/workflows/lint-patterns.yml@main
|
|
15
|
+
|
|
16
|
+
security:
|
|
17
|
+
uses: LegionIO/.github/.github/workflows/security-scan.yml@main
|
|
18
|
+
|
|
19
|
+
version-changelog:
|
|
20
|
+
uses: LegionIO/.github/.github/workflows/version-changelog.yml@main
|
|
21
|
+
|
|
22
|
+
dependency-review:
|
|
23
|
+
uses: LegionIO/.github/.github/workflows/dependency-review.yml@main
|
|
24
|
+
|
|
25
|
+
stale:
|
|
26
|
+
if: github.event_name == 'schedule'
|
|
27
|
+
uses: LegionIO/.github/.github/workflows/stale.yml@main
|
|
28
|
+
|
|
11
29
|
release:
|
|
12
|
-
needs: ci
|
|
30
|
+
needs: [ci, lint]
|
|
13
31
|
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
14
32
|
uses: LegionIO/.github/.github/workflows/release.yml@main
|
|
15
33
|
secrets:
|
|
16
|
-
rubygems-api-key: ${{ secrets.RUBYGEMS_API_KEY }}
|
|
34
|
+
rubygems-api-key: ${{ secrets.RUBYGEMS_API_KEY }}
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Legion::Settings Changelog
|
|
2
2
|
|
|
3
|
+
## [1.3.16] - 2026-03-24
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- `Loader#load_module_settings` and `#load_module_default` now reset `@indifferent_access = false` after replacing `@settings` with a new plain Hash from `deep_merge`, preventing stale state where string key access silently returned nil on subsequent `to_hash` calls (fixes #4)
|
|
7
|
+
|
|
8
|
+
## [1.3.15] - 2026-03-23
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- `Loader.default_directories` class method: canonical settings directory discovery with `LEGION_SETTINGS_DIRS` env var override
|
|
12
|
+
- Returns `~/.legionio/settings` + `/etc/legionio/settings` (unix) or `~/.legionio/settings` + optional `%APPDATA%\legionio\settings` (windows, when APPDATA is set)
|
|
13
|
+
- `log_info` private helper for info-level logging in Loader
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- `load_directory` logging upgraded from debug to info level
|
|
17
|
+
|
|
3
18
|
## [1.3.14] - 2026-03-22
|
|
4
19
|
|
|
5
20
|
### Added
|
|
@@ -13,6 +13,23 @@ module Legion
|
|
|
13
13
|
class Error < RuntimeError; end
|
|
14
14
|
attr_reader :warnings, :errors, :loaded_files, :settings
|
|
15
15
|
|
|
16
|
+
def self.default_directories
|
|
17
|
+
env_dirs = ENV.fetch('LEGION_SETTINGS_DIRS', nil)
|
|
18
|
+
if env_dirs && !env_dirs.strip.empty?
|
|
19
|
+
env_dirs_list = env_dirs.split(File::PATH_SEPARATOR).map(&:strip).reject(&:empty?).map { |p| File.expand_path(p) }
|
|
20
|
+
return env_dirs_list unless env_dirs_list.empty?
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
dirs = [File.expand_path('~/.legionio/settings')]
|
|
24
|
+
if OS.windows?
|
|
25
|
+
appdata = ENV.fetch('APPDATA', nil)
|
|
26
|
+
dirs << File.join(appdata, 'legionio', 'settings') if appdata && !appdata.strip.empty?
|
|
27
|
+
else
|
|
28
|
+
dirs << '/etc/legionio/settings'
|
|
29
|
+
end
|
|
30
|
+
dirs
|
|
31
|
+
end
|
|
32
|
+
|
|
16
33
|
def initialize
|
|
17
34
|
@warnings = []
|
|
18
35
|
@errors = []
|
|
@@ -160,6 +177,7 @@ module Legion
|
|
|
160
177
|
mod_name = config.keys.first
|
|
161
178
|
log_debug("Loading module settings: #{mod_name}")
|
|
162
179
|
@settings = deep_merge(config, @settings)
|
|
180
|
+
@indifferent_access = false
|
|
163
181
|
end
|
|
164
182
|
|
|
165
183
|
def load_module_default(config)
|
|
@@ -168,6 +186,7 @@ module Legion
|
|
|
168
186
|
merged = deep_merge(@settings, config)
|
|
169
187
|
deep_diff(@settings, merged) unless @loaded_files.empty?
|
|
170
188
|
@settings = merged
|
|
189
|
+
@indifferent_access = false
|
|
171
190
|
end
|
|
172
191
|
|
|
173
192
|
def load_file(file)
|
|
@@ -195,7 +214,7 @@ module Legion
|
|
|
195
214
|
if File.readable?(path) && File.executable?(path)
|
|
196
215
|
files = Dir.glob(File.join(path, '**{,/*/**}/*.json')).uniq
|
|
197
216
|
files.each { |file| load_file(file) }
|
|
198
|
-
|
|
217
|
+
log_info("Settings: loaded directory #{path} (#{files.size} files)")
|
|
199
218
|
else
|
|
200
219
|
load_error('insufficient permissions for loading', directory: directory)
|
|
201
220
|
end
|
|
@@ -373,6 +392,10 @@ module Legion
|
|
|
373
392
|
'unknown'
|
|
374
393
|
end
|
|
375
394
|
|
|
395
|
+
def log_info(message)
|
|
396
|
+
defined?(Legion::Logging) ? Legion::Logging.info(message) : $stdout.puts(message)
|
|
397
|
+
end
|
|
398
|
+
|
|
376
399
|
def log_debug(message)
|
|
377
400
|
Legion::Logging.debug(message) if defined?(Legion::Logging)
|
|
378
401
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: legion-settings
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.3.
|
|
4
|
+
version: 1.3.16
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -34,6 +34,8 @@ extra_rdoc_files:
|
|
|
34
34
|
- LICENSE
|
|
35
35
|
- README.md
|
|
36
36
|
files:
|
|
37
|
+
- ".github/CODEOWNERS"
|
|
38
|
+
- ".github/dependabot.yml"
|
|
37
39
|
- ".github/workflows/ci.yml"
|
|
38
40
|
- ".gitignore"
|
|
39
41
|
- ".rubocop.yml"
|