config_files 0.1.0 → 0.1.6
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/Gemfile.lock +34 -0
- data/config_files.gemspec +2 -1
- data/lib/config_files.rb +28 -7
- data/lib/config_files/file_factory.rb +1 -1
- data/lib/config_files/loaders/json.rb +2 -2
- data/lib/config_files/loaders/yaml.rb +2 -2
- data/lib/config_files/version.rb +1 -1
- data/test/config_files_test.rb +10 -1
- data/test/etc/dummy.json +13 -0
- metadata +23 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e601554ecea9bc4ad625f62936f005413b5cc13e76c25776a6abd1455dca6ff
|
4
|
+
data.tar.gz: 91b7f6eeb1e07b2646c3086d4ef008b91ee04d63fee1b7b6ccb9a73c8adfd67a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d086ca2975a90d9035a7e81eac2a7ddaadfcbd42ca61a3cb33fbde4675b42c226bfd181c48a9dcc6206f6fd6167e26b016af977fee61b2ab02d5bb132c67da53
|
7
|
+
data.tar.gz: 84211ae6ba278ebec36df53a7e0f7275b35430118b135ae6ecc5e73f3ad5ca02833691e4655e38f61f67857c62beb7a041189d3b00a3395e33526f96730c1520
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
config_files (0.1.5)
|
5
|
+
activesupport (>= 2.2.1)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
activesupport (6.0.3.3)
|
11
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
12
|
+
i18n (>= 0.7, < 2)
|
13
|
+
minitest (~> 5.1)
|
14
|
+
tzinfo (~> 1.1)
|
15
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
16
|
+
concurrent-ruby (1.1.7)
|
17
|
+
i18n (1.8.5)
|
18
|
+
concurrent-ruby (~> 1.0)
|
19
|
+
minitest (5.14.2)
|
20
|
+
rake (13.0.1)
|
21
|
+
thread_safe (0.3.6)
|
22
|
+
tzinfo (1.2.7)
|
23
|
+
thread_safe (~> 0.1)
|
24
|
+
zeitwerk (2.4.0)
|
25
|
+
|
26
|
+
PLATFORMS
|
27
|
+
ruby
|
28
|
+
|
29
|
+
DEPENDENCIES
|
30
|
+
config_files!
|
31
|
+
rake
|
32
|
+
|
33
|
+
BUNDLED WITH
|
34
|
+
1.16.1
|
data/config_files.gemspec
CHANGED
data/lib/config_files.rb
CHANGED
@@ -3,23 +3,32 @@ require 'config_files/loader_factory'
|
|
3
3
|
require 'config_files/loaders'
|
4
4
|
require 'config_files/version'
|
5
5
|
require 'active_support/core_ext/hash/deep_merge'
|
6
|
+
require 'active_support/core_ext/object/blank'
|
6
7
|
|
7
8
|
require 'meta'
|
8
9
|
require 'yaml'
|
10
|
+
|
11
|
+
class NoDirectoryEntry < NoMethodError; end
|
9
12
|
module ConfigFiles
|
10
13
|
|
11
14
|
class << self
|
12
15
|
def included(base)
|
13
16
|
base.class_eval do
|
14
|
-
extend
|
17
|
+
extend ConfigFilesClassMethods
|
15
18
|
end
|
16
19
|
end
|
17
20
|
end
|
18
21
|
|
19
|
-
module
|
22
|
+
module ConfigFilesClassMethods
|
20
23
|
include Meta
|
21
24
|
attr_accessor :directories
|
22
25
|
|
26
|
+
def self.extended(base)
|
27
|
+
base.instance_eval do
|
28
|
+
self.directories=default_directories
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
23
32
|
def any_extension
|
24
33
|
'*'
|
25
34
|
end
|
@@ -28,11 +37,15 @@ module ConfigFiles
|
|
28
37
|
:etc
|
29
38
|
end
|
30
39
|
|
40
|
+
def default_directories
|
41
|
+
{ :etc => ['config', 'etc', '/etc'] }
|
42
|
+
end
|
43
|
+
|
31
44
|
def config_directories(*arr)
|
32
|
-
self.directories||=
|
45
|
+
self.directories||=default_directories
|
33
46
|
arr.each do |directory_list|
|
34
47
|
directory_list.each do |key, value|
|
35
|
-
self.directories[key]=value.map { |dir| File.expand_path(dir) }
|
48
|
+
self.directories[key]=value.map { |dir| ::File.expand_path(dir) }
|
36
49
|
meta_def("#{key}_dir") { @directories[key] }
|
37
50
|
end
|
38
51
|
end
|
@@ -43,7 +56,7 @@ module ConfigFiles
|
|
43
56
|
end
|
44
57
|
|
45
58
|
def build_combined(file)
|
46
|
-
|
59
|
+
merged_hash(file)
|
47
60
|
end
|
48
61
|
|
49
62
|
def static_config_files(*arr)
|
@@ -62,12 +75,20 @@ module ConfigFiles
|
|
62
75
|
alias_method :config_files, :dynamic_config_files
|
63
76
|
|
64
77
|
private
|
78
|
+
def directory_listing(directory, file)
|
79
|
+
::Dir.glob(::File.join(directory, "#{file}.*"))
|
80
|
+
end
|
81
|
+
|
65
82
|
def first_directory(file, key=config_key)
|
66
|
-
|
83
|
+
begin
|
84
|
+
self.directories[key]&.detect { |directory| directory_listing(directory, file).presence } || ''
|
85
|
+
rescue NoMethodError=>e
|
86
|
+
raise NoDirectoryEntry, "Unable to find #{key} in #{self.directories}"
|
87
|
+
end
|
67
88
|
end
|
68
89
|
|
69
90
|
def files(file, key=config_key)
|
70
|
-
|
91
|
+
directory_listing(first_directory(file, key), file)
|
71
92
|
end
|
72
93
|
|
73
94
|
def config_files(file, key=config_key)
|
@@ -4,8 +4,8 @@ module ConfigFiles
|
|
4
4
|
module Loaders
|
5
5
|
class Json
|
6
6
|
class << self
|
7
|
-
def call(file_name, object_class: ::
|
8
|
-
::JSON.load(file_name, nil, {object_class: object_class})
|
7
|
+
def call(file_name, object_class: ::Hash)
|
8
|
+
::JSON.load(::File.open(file_name), nil, {object_class: object_class, quirks_mode: true})
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
data/lib/config_files/version.rb
CHANGED
data/test/config_files_test.rb
CHANGED
@@ -16,6 +16,11 @@ class Dummy2 < Dummy
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
class Defaults
|
20
|
+
include ConfigFiles
|
21
|
+
static_config_files :dummy
|
22
|
+
end
|
23
|
+
|
19
24
|
class ConfigFilesTest < MiniTest::Test
|
20
25
|
def test_config_key
|
21
26
|
assert_equal(:etc, Dummy.config_key)
|
@@ -38,10 +43,14 @@ class ConfigFilesTest < MiniTest::Test
|
|
38
43
|
end
|
39
44
|
|
40
45
|
def test_empty_for_missing_files
|
41
|
-
assert_equal({}, Dummy.broken
|
46
|
+
assert_equal({}, Dummy.broken)
|
42
47
|
end
|
43
48
|
|
44
49
|
def test_yaml_and_config_override
|
45
50
|
assert_equal('test', Dummy2.dummy[:config_test])
|
46
51
|
end
|
52
|
+
|
53
|
+
def test_defaults_are_picked_up_when_no_directories_used
|
54
|
+
assert_equal('test', Defaults.dummy[:config_test])
|
55
|
+
end
|
47
56
|
end
|
data/test/etc/dummy.json
ADDED
metadata
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: config_files
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul McKibbin
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2012-11-11 00:00:00.000000000 Z
|
@@ -16,9 +16,23 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.2.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.2.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - ">="
|
@@ -34,6 +48,7 @@ extra_rdoc_files: []
|
|
34
48
|
files:
|
35
49
|
- ".gitignore"
|
36
50
|
- Gemfile
|
51
|
+
- Gemfile.lock
|
37
52
|
- LICENCE.txt
|
38
53
|
- README.md
|
39
54
|
- Rakefile
|
@@ -49,13 +64,14 @@ files:
|
|
49
64
|
- lib/meta.rb
|
50
65
|
- test/config_files_test.rb
|
51
66
|
- test/etc/dummy.conf
|
67
|
+
- test/etc/dummy.json
|
52
68
|
- test/etc/dummy.yml
|
53
69
|
- test/loader_factory_test.rb
|
54
70
|
homepage: https://github.com/blackrat/config_files
|
55
71
|
licenses:
|
56
72
|
- MIT
|
57
73
|
metadata: {}
|
58
|
-
post_install_message:
|
74
|
+
post_install_message:
|
59
75
|
rdoc_options: []
|
60
76
|
require_paths:
|
61
77
|
- lib
|
@@ -70,9 +86,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
86
|
- !ruby/object:Gem::Version
|
71
87
|
version: '0'
|
72
88
|
requirements: []
|
73
|
-
|
74
|
-
|
75
|
-
signing_key:
|
89
|
+
rubygems_version: 3.1.4
|
90
|
+
signing_key:
|
76
91
|
specification_version: 4
|
77
92
|
summary: ConfigFiles is a configuration file access tool. It parses multiple configuration
|
78
93
|
files in multiple formats and presents a consistent block to the application with
|
@@ -80,5 +95,6 @@ summary: ConfigFiles is a configuration file access tool. It parses multiple con
|
|
80
95
|
test_files:
|
81
96
|
- test/config_files_test.rb
|
82
97
|
- test/etc/dummy.conf
|
98
|
+
- test/etc/dummy.json
|
83
99
|
- test/etc/dummy.yml
|
84
100
|
- test/loader_factory_test.rb
|