stacked_config 0.0.2 → 0.1.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 +4 -4
- data/.gitignore +2 -1
- data/lib/stacked_config.rb +1 -0
- data/lib/stacked_config/layers/provided_config_file_layer.rb +31 -0
- data/lib/stacked_config/orchestrator.rb +8 -3
- data/lib/stacked_config/version.rb +1 -1
- data/spec/orchestrator_spec.rb +43 -4
- data/spec/provided_config_file_layer_spec.rb +15 -0
- data/stacked_config.gemspec +1 -1
- data/test/specific.yml +6 -0
- data/test/unix/etc/rspec/rspec.yml +1 -0
- data/test/unix/etc/stacked_config.yml +2 -1
- data/test/user/.config/rspec.yml +7 -0
- data/test/user/.config/weird_name.yml +5 -0
- metadata +13 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0cc8ac49474011f38a0cf1b6859849c9feb356b9
|
4
|
+
data.tar.gz: 5b5076b0f63330df95152b0403619043807bee21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f66b20e0469a6c5f3ce095c401ec1ba527ef9e9a0e1a15e597c02d6d4b4f7ddf7d90362548fe9b757b9e4b2822a94bb321f463181ecd375e92f2735fa0b2a16c
|
7
|
+
data.tar.gz: 4f6b134a3dc729a0a03f67c70338eac58cae74780df30ee62d90a822bd5bb7026966cd1cec9fba06105b9f402c52d856f34d4f7f302a46c63bd1350734102359
|
data/.gitignore
CHANGED
data/lib/stacked_config.rb
CHANGED
@@ -9,5 +9,6 @@ require 'stacked_config/layers/system_layer'
|
|
9
9
|
require 'stacked_config/layers/global_layer'
|
10
10
|
require 'stacked_config/layers/user_layer'
|
11
11
|
require 'stacked_config/layers/command_line_layer'
|
12
|
+
require 'stacked_config/layers/provided_config_file_layer'
|
12
13
|
require 'stacked_config/orchestrator'
|
13
14
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module StackedConfig
|
2
|
+
module Layers
|
3
|
+
|
4
|
+
class ProvidedConfigFileLayer < SuperStack::Layer
|
5
|
+
|
6
|
+
|
7
|
+
def managed
|
8
|
+
build_command_line_options unless @already_built
|
9
|
+
if manager[:'config-file']
|
10
|
+
if File.readable? manager[:'config-file']
|
11
|
+
@file_name = manager[:'config-file']
|
12
|
+
self.merge_policy = SuperStack::MergePolicies::OverridePolicy if manager[:'config-override']
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def build_command_line_options
|
20
|
+
manager.add_command_line_section('Configuration options') do |slop|
|
21
|
+
slop.on 'config-file', 'Specify a config file.', :argument => true
|
22
|
+
slop.on 'config-override', 'If specified override all other config.', :argument => false
|
23
|
+
end
|
24
|
+
@already_built = true
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -3,7 +3,8 @@ module StackedConfig
|
|
3
3
|
|
4
4
|
include StackedConfig::ProgramDescriptionHelper
|
5
5
|
|
6
|
-
attr_reader :system_layer, :global_layer, :user_layer, :command_line_layer
|
6
|
+
attr_reader :system_layer, :global_layer, :user_layer, :command_line_layer,
|
7
|
+
:provided_config_file_layer
|
7
8
|
|
8
9
|
def initialize
|
9
10
|
super
|
@@ -16,6 +17,10 @@ module StackedConfig
|
|
16
17
|
private
|
17
18
|
|
18
19
|
def setup_layers
|
20
|
+
|
21
|
+
# The command line level.
|
22
|
+
@command_line_layer = setup_layer StackedConfig::Layers::CommandLineLayer, 'Command line configuration level', 100
|
23
|
+
|
19
24
|
# The system level
|
20
25
|
@system_layer = setup_layer StackedConfig::Layers::SystemLayer, 'System-wide configuration level', 10
|
21
26
|
|
@@ -25,8 +30,8 @@ module StackedConfig
|
|
25
30
|
# The user level
|
26
31
|
@user_layer = setup_layer StackedConfig::Layers::UserLayer, 'User configuration level', 30
|
27
32
|
|
28
|
-
# The
|
29
|
-
@
|
33
|
+
# The specifically provided config file level
|
34
|
+
@provided_config_file_layer = setup_layer StackedConfig::Layers::ProvidedConfigFileLayer, 'Specific config file configuration level', 40
|
30
35
|
|
31
36
|
# The layer to write something
|
32
37
|
override_layer = setup_layer SuperStack::Layer, 'Overridden configuration level', 1000
|
data/spec/orchestrator_spec.rb
CHANGED
@@ -30,10 +30,10 @@ describe StackedConfig::Orchestrator do
|
|
30
30
|
context 'when changing the executable_name' do
|
31
31
|
|
32
32
|
it 'should reload all config files' do
|
33
|
-
expect(subject[:
|
33
|
+
expect(subject[:user_property]).not_to be_nil
|
34
34
|
expect(subject[:weird_property]).to be_nil
|
35
35
|
subject.executable_name = 'weird_name'
|
36
|
-
expect(subject[:
|
36
|
+
expect(subject[:user_property]).to be_nil
|
37
37
|
expect(subject[:weird_property]).not_to be_nil
|
38
38
|
end
|
39
39
|
|
@@ -59,8 +59,12 @@ describe StackedConfig::Orchestrator do
|
|
59
59
|
expect(subject.user_layer).to be subject.to_a[2]
|
60
60
|
end
|
61
61
|
|
62
|
-
it 'should have the
|
63
|
-
expect(subject.
|
62
|
+
it 'should have the specific-file layer evaluated in fourth' do
|
63
|
+
expect(subject.provided_config_file_layer).to be subject.to_a[3]
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should have the command-line layer evaluated in fifth' do
|
67
|
+
expect(subject.command_line_layer).to be subject.to_a[4]
|
64
68
|
end
|
65
69
|
|
66
70
|
it 'should have the writable layer evaluated last' do
|
@@ -69,7 +73,42 @@ describe StackedConfig::Orchestrator do
|
|
69
73
|
|
70
74
|
end
|
71
75
|
|
76
|
+
context 'when config-file is provided on the command line' do
|
77
|
+
|
78
|
+
let(:test_config_file) {
|
79
|
+
gem_path = File.expand_path '../..', __FILE__
|
80
|
+
File.join gem_path, 'test', 'specific.yml'
|
81
|
+
}
|
82
|
+
|
83
|
+
it 'should add the content of the specified config-file' do
|
84
|
+
subject[:'config-file'] = test_config_file
|
85
|
+
subject.provided_config_file_layer.managed
|
86
|
+
subject.provided_config_file_layer.reload
|
87
|
+
expect(subject[:system_property]).not_to be_nil
|
88
|
+
expect(subject[:global_property]).not_to be_nil
|
89
|
+
expect(subject[:user_property]).not_to be_nil
|
90
|
+
expect(subject[:specific_property]).not_to be_nil
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
context 'when specifying config-override on the command line' do
|
72
95
|
|
96
|
+
it 'should override all preceding layers (system, global, user)' do
|
97
|
+
subject[:'config-file'] = test_config_file
|
98
|
+
subject[:'config-override'] = true
|
99
|
+
subject.provided_config_file_layer.managed
|
100
|
+
subject.provided_config_file_layer.reload
|
101
|
+
expect(subject[:system_property]).to be_nil
|
102
|
+
expect(subject[:global_property]).to be_nil
|
103
|
+
expect(subject[:user_property]).to be_nil
|
104
|
+
expect(subject[:specific_property]).not_to be_nil
|
105
|
+
expect(subject[:'config-override']).not_to be_nil
|
106
|
+
end
|
107
|
+
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
73
112
|
|
74
113
|
|
75
114
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
describe StackedConfig::Layers::ProvidedConfigFileLayer do
|
5
|
+
|
6
|
+
subject { StackedConfig::Layers::ProvidedConfigFileLayer.new }
|
7
|
+
|
8
|
+
|
9
|
+
it 'should be empty by default' do
|
10
|
+
expect(subject.empty?).to be_truthy
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
end
|
data/stacked_config.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency 'pry'
|
24
24
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
25
25
|
|
26
|
-
spec.add_dependency 'super_stack', '~> 0.2', '>= 0.2.
|
26
|
+
spec.add_dependency 'super_stack', '~> 0.2', '>= 0.2.4'
|
27
27
|
spec.add_dependency 'slop'
|
28
28
|
|
29
29
|
end
|
data/test/specific.yml
ADDED
@@ -2,4 +2,5 @@
|
|
2
2
|
# It is dedicated to configuration for all gems that would use the stacked_config gem.
|
3
3
|
# To be used at administrator level only
|
4
4
|
|
5
|
-
stacked_config_copyright: (c)2014 L.Briais under MIT license
|
5
|
+
stacked_config_copyright: (c)2014 L.Briais under MIT license
|
6
|
+
system_property: foo
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stacked_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurent B.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -75,7 +75,7 @@ dependencies:
|
|
75
75
|
version: '0.2'
|
76
76
|
- - '>='
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 0.2.
|
78
|
+
version: 0.2.4
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -85,7 +85,7 @@ dependencies:
|
|
85
85
|
version: '0.2'
|
86
86
|
- - '>='
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.2.
|
88
|
+
version: 0.2.4
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: slop
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -117,6 +117,7 @@ files:
|
|
117
117
|
- lib/stacked_config/layers/command_line_layer.rb
|
118
118
|
- lib/stacked_config/layers/generic_layer.rb
|
119
119
|
- lib/stacked_config/layers/global_layer.rb
|
120
|
+
- lib/stacked_config/layers/provided_config_file_layer.rb
|
120
121
|
- lib/stacked_config/layers/system_layer.rb
|
121
122
|
- lib/stacked_config/layers/user_layer.rb
|
122
123
|
- lib/stacked_config/orchestrator.rb
|
@@ -126,13 +127,17 @@ files:
|
|
126
127
|
- spec/command_line_layer_spec.rb
|
127
128
|
- spec/global_layer_spec.rb
|
128
129
|
- spec/orchestrator_spec.rb
|
130
|
+
- spec/provided_config_file_layer_spec.rb
|
129
131
|
- spec/source_helper_spec.rb
|
130
132
|
- spec/spec_helper.rb
|
131
133
|
- spec/system_layer_spec.rb
|
132
134
|
- spec/user_layer_spec.rb
|
133
135
|
- stacked_config.gemspec
|
136
|
+
- test/specific.yml
|
134
137
|
- test/unix/etc/rspec/rspec.yml
|
135
138
|
- test/unix/etc/stacked_config.yml
|
139
|
+
- test/user/.config/rspec.yml
|
140
|
+
- test/user/.config/weird_name.yml
|
136
141
|
homepage: https://github.com/lbriais/stacked_config
|
137
142
|
licenses:
|
138
143
|
- MIT
|
@@ -161,9 +166,13 @@ test_files:
|
|
161
166
|
- spec/command_line_layer_spec.rb
|
162
167
|
- spec/global_layer_spec.rb
|
163
168
|
- spec/orchestrator_spec.rb
|
169
|
+
- spec/provided_config_file_layer_spec.rb
|
164
170
|
- spec/source_helper_spec.rb
|
165
171
|
- spec/spec_helper.rb
|
166
172
|
- spec/system_layer_spec.rb
|
167
173
|
- spec/user_layer_spec.rb
|
174
|
+
- test/specific.yml
|
168
175
|
- test/unix/etc/rspec/rspec.yml
|
169
176
|
- test/unix/etc/stacked_config.yml
|
177
|
+
- test/user/.config/rspec.yml
|
178
|
+
- test/user/.config/weird_name.yml
|