chamber 2.8.0 → 2.9.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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +1 -0
- data/LICENSE.txt +19 -0
- data/Rakefile +1 -0
- data/bin/chamber +1 -0
- data/lib/chamber.rb +1 -0
- data/lib/chamber/binary/heroku.rb +1 -0
- data/lib/chamber/binary/runner.rb +1 -0
- data/lib/chamber/binary/travis.rb +1 -0
- data/lib/chamber/commands/base.rb +1 -0
- data/lib/chamber/commands/comparable.rb +1 -0
- data/lib/chamber/commands/compare.rb +1 -0
- data/lib/chamber/commands/files.rb +1 -0
- data/lib/chamber/commands/heroku.rb +1 -0
- data/lib/chamber/commands/heroku/clear.rb +1 -0
- data/lib/chamber/commands/heroku/compare.rb +1 -0
- data/lib/chamber/commands/heroku/pull.rb +1 -0
- data/lib/chamber/commands/heroku/push.rb +1 -0
- data/lib/chamber/commands/initialize.rb +5 -3
- data/lib/chamber/commands/securable.rb +1 -0
- data/lib/chamber/commands/secure.rb +1 -0
- data/lib/chamber/commands/show.rb +1 -0
- data/lib/chamber/commands/travis.rb +1 -0
- data/lib/chamber/commands/travis/secure.rb +1 -0
- data/lib/chamber/configuration.rb +1 -0
- data/lib/chamber/context_resolver.rb +10 -7
- data/lib/chamber/decryption_key.rb +1 -0
- data/lib/chamber/encryption_methods/none.rb +17 -0
- data/lib/chamber/encryption_methods/public_key.rb +27 -0
- data/lib/chamber/encryption_methods/ssl.rb +60 -0
- data/lib/chamber/environmentable.rb +1 -0
- data/lib/chamber/errors/decryption_failure.rb +1 -0
- data/lib/chamber/file.rb +9 -1
- data/lib/chamber/file_set.rb +4 -3
- data/lib/chamber/filters/boolean_conversion_filter.rb +2 -1
- data/lib/chamber/filters/decryption_filter.rb +20 -29
- data/lib/chamber/filters/encryption_filter.rb +29 -14
- data/lib/chamber/filters/environment_filter.rb +2 -1
- data/lib/chamber/filters/failed_decryption_filter.rb +3 -2
- data/lib/chamber/filters/insecure_filter.rb +1 -0
- data/lib/chamber/filters/namespace_filter.rb +2 -1
- data/lib/chamber/filters/secure_filter.rb +2 -1
- data/lib/chamber/filters/translate_secure_keys_filter.rb +2 -1
- data/lib/chamber/instance.rb +1 -0
- data/lib/chamber/namespace_set.rb +4 -3
- data/lib/chamber/rails.rb +1 -0
- data/lib/chamber/rails/railtie.rb +3 -1
- data/lib/chamber/rubinius_fix.rb +1 -0
- data/lib/chamber/settings.rb +23 -18
- data/lib/chamber/version.rb +2 -1
- data/spec/lib/chamber/commands/files_spec.rb +5 -2
- data/spec/lib/chamber/commands/heroku/clear_spec.rb +1 -0
- data/spec/lib/chamber/commands/heroku/compare_spec.rb +1 -0
- data/spec/lib/chamber/commands/heroku/pull_spec.rb +1 -0
- data/spec/lib/chamber/commands/heroku/push_spec.rb +1 -0
- data/spec/lib/chamber/commands/secure_spec.rb +5 -2
- data/spec/lib/chamber/commands/show_spec.rb +1 -0
- data/spec/lib/chamber/context_resolver_spec.rb +8 -5
- data/spec/lib/chamber/file_set_spec.rb +55 -52
- data/spec/lib/chamber/file_spec.rb +43 -9
- data/spec/lib/chamber/filters/boolean_conversion_filter_spec.rb +14 -5
- data/spec/lib/chamber/filters/decryption_filter_spec.rb +85 -9
- data/spec/lib/chamber/filters/encryption_filter_spec.rb +76 -10
- data/spec/lib/chamber/filters/environment_filter_spec.rb +9 -2
- data/spec/lib/chamber/filters/failed_decryption_filter_spec.rb +7 -6
- data/spec/lib/chamber/filters/insecure_filter_spec.rb +12 -4
- data/spec/lib/chamber/filters/namespace_filter_spec.rb +33 -14
- data/spec/lib/chamber/filters/secure_filter_spec.rb +8 -3
- data/spec/lib/chamber/filters/translate_secure_keys_filter_spec.rb +10 -3
- data/spec/lib/chamber/namespace_set_spec.rb +6 -3
- data/spec/lib/chamber/settings_spec.rb +36 -25
- data/spec/lib/chamber_spec.rb +25 -10
- data/spec/rails-2-test/config/application.rb +1 -0
- data/spec/rails-3-test/config/application.rb +1 -0
- data/spec/rails-4-test/config/application.rb +1 -0
- metadata +35 -9
- metadata.gz.sig +0 -0
- data/LICENSE +0 -22
@@ -1,13 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'openssl'
|
2
3
|
require 'base64'
|
3
4
|
require 'hashie/mash'
|
4
5
|
require 'yaml'
|
6
|
+
require 'chamber/encryption_methods/public_key'
|
7
|
+
require 'chamber/encryption_methods/ssl'
|
8
|
+
require 'chamber/encryption_methods/none'
|
5
9
|
|
6
10
|
module Chamber
|
7
11
|
module Filters
|
8
12
|
class EncryptionFilter
|
9
|
-
SECURE_KEY_TOKEN
|
10
|
-
BASE64_STRING_PATTERN
|
13
|
+
SECURE_KEY_TOKEN = /\A_secure_/
|
14
|
+
BASE64_STRING_PATTERN = %r{\A[A-Za-z0-9\+\/]{342}==\z}
|
15
|
+
LARGE_DATA_STRING_PATTERN = %r{\A([A-Za-z0-9\+\/#]*\={0,2})#([A-Za-z0-9\+\/#]*\={0,2})#([A-Za-z0-9\+\/#]*\={0,2})\z} # rubocop:disable Metrics/LineLength
|
11
16
|
|
12
17
|
def initialize(options = {})
|
13
18
|
self.encryption_key = options.fetch(:encryption_key, nil)
|
@@ -15,7 +20,7 @@ class EncryptionFilter
|
|
15
20
|
end
|
16
21
|
|
17
22
|
def self.execute(options = {})
|
18
|
-
new(options).
|
23
|
+
new(options).__send__(:execute)
|
19
24
|
end
|
20
25
|
|
21
26
|
protected
|
@@ -27,17 +32,13 @@ class EncryptionFilter
|
|
27
32
|
settings = Hashie::Mash.new
|
28
33
|
|
29
34
|
raw_data.each_pair do |key, value|
|
30
|
-
if value.respond_to? :each_pair
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
settings[key] = value
|
35
|
+
settings[key] = if value.respond_to? :each_pair
|
36
|
+
execute(value)
|
37
|
+
elsif key.match(SECURE_KEY_TOKEN)
|
38
|
+
encryption_method(value).encrypt(key, value, encryption_key)
|
39
|
+
else
|
40
|
+
value
|
41
|
+
end
|
41
42
|
end
|
42
43
|
|
43
44
|
settings
|
@@ -54,6 +55,20 @@ class EncryptionFilter
|
|
54
55
|
|
55
56
|
@encryption_key = OpenSSL::PKey::RSA.new(key_content)
|
56
57
|
end
|
58
|
+
|
59
|
+
def encryption_method(value)
|
60
|
+
if value.respond_to?(:match) && value.match(BASE64_STRING_PATTERN)
|
61
|
+
EncryptionMethods::None
|
62
|
+
else
|
63
|
+
serialized_value = YAML.dump(value)
|
64
|
+
|
65
|
+
if serialized_value.length <= 128
|
66
|
+
EncryptionMethods::PublicKey
|
67
|
+
else
|
68
|
+
EncryptionMethods::Ssl
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
57
72
|
end
|
58
73
|
end
|
59
74
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'chamber/environmentable'
|
2
3
|
|
3
4
|
module Chamber
|
@@ -54,7 +55,7 @@ class EnvironmentFilter
|
|
54
55
|
#
|
55
56
|
#
|
56
57
|
def self.execute(options = {})
|
57
|
-
new(options).
|
58
|
+
new(options).__send__(:execute)
|
58
59
|
end
|
59
60
|
|
60
61
|
protected
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'chamber/errors/decryption_failure'
|
2
3
|
|
3
4
|
module Chamber
|
@@ -11,7 +12,7 @@ class FailedDecryptionFilter
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def self.execute(options = {})
|
14
|
-
new(options).
|
15
|
+
new(options).__send__(:execute)
|
15
16
|
end
|
16
17
|
|
17
18
|
protected
|
@@ -30,7 +31,7 @@ class FailedDecryptionFilter
|
|
30
31
|
|
31
32
|
fail Chamber::Errors::DecryptionFailure,
|
32
33
|
"Failed to decrypt #{key} (with an encrypted value of '#{value}') " \
|
33
|
-
|
34
|
+
"in your settings."
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'hashie/mash'
|
2
3
|
|
3
4
|
module Chamber
|
@@ -10,7 +11,7 @@ class TranslateSecureKeysFilter
|
|
10
11
|
end
|
11
12
|
|
12
13
|
def self.execute(options = {})
|
13
|
-
new(options).
|
14
|
+
new(options).__send__(:execute)
|
14
15
|
end
|
15
16
|
|
16
17
|
protected
|
data/lib/chamber/instance.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'set'
|
2
3
|
|
3
4
|
###
|
@@ -83,7 +84,7 @@ class NamespaceSet
|
|
83
84
|
namespaces.to_a
|
84
85
|
end
|
85
86
|
|
86
|
-
|
87
|
+
alias to_a to_ary
|
87
88
|
|
88
89
|
###
|
89
90
|
# Internal: Determines whether a NamespaceSet is equal to another array-like
|
@@ -102,8 +103,8 @@ class NamespaceSet
|
|
102
103
|
# Returns a Boolean
|
103
104
|
#
|
104
105
|
def eql?(other)
|
105
|
-
other.is_a?(NamespaceSet)
|
106
|
-
namespaces
|
106
|
+
other.is_a?(NamespaceSet) &&
|
107
|
+
namespaces == other.namespaces
|
107
108
|
end
|
108
109
|
|
109
110
|
protected
|
data/lib/chamber/rails.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'socket'
|
2
3
|
|
3
4
|
module Chamber
|
@@ -7,7 +8,8 @@ class Railtie < ::Rails::Railtie
|
|
7
8
|
Chamber.load(basepath: ::Rails.root.join('config'),
|
8
9
|
namespaces: {
|
9
10
|
environment: -> { ::Rails.env },
|
10
|
-
hostname: -> { Socket.gethostname }
|
11
|
+
hostname: -> { Socket.gethostname },
|
12
|
+
})
|
11
13
|
end
|
12
14
|
end
|
13
15
|
end
|
data/lib/chamber/rubinius_fix.rb
CHANGED
data/lib/chamber/settings.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'hashie/mash'
|
2
3
|
require 'chamber/namespace_set'
|
3
4
|
require 'chamber/filters/namespace_filter'
|
@@ -22,16 +23,16 @@ class Settings
|
|
22
23
|
self.raw_data = options[:settings] || {}
|
23
24
|
self.decryption_key = options[:decryption_key]
|
24
25
|
self.encryption_key = options[:encryption_key]
|
25
|
-
self.pre_filters
|
26
|
-
|
27
|
-
|
28
|
-
self.post_filters
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
26
|
+
self.pre_filters = options[:pre_filters] || [
|
27
|
+
Filters::NamespaceFilter,
|
28
|
+
]
|
29
|
+
self.post_filters = options[:post_filters] || [
|
30
|
+
Filters::DecryptionFilter,
|
31
|
+
Filters::EnvironmentFilter,
|
32
|
+
Filters::FailedDecryptionFilter,
|
33
|
+
Filters::BooleanConversionFilter,
|
34
|
+
Filters::TranslateSecureKeysFilter,
|
35
|
+
]
|
35
36
|
end
|
36
37
|
|
37
38
|
###
|
@@ -186,7 +187,8 @@ class Settings
|
|
186
187
|
encryption_key: encryption_key || other_settings.encryption_key,
|
187
188
|
decryption_key: decryption_key || other_settings.decryption_key,
|
188
189
|
namespaces: (namespaces + other_settings.namespaces),
|
189
|
-
settings: raw_data.merge(other_settings.raw_data)
|
190
|
+
settings: raw_data.merge(other_settings.raw_data),
|
191
|
+
)
|
190
192
|
end
|
191
193
|
|
192
194
|
###
|
@@ -205,29 +207,32 @@ class Settings
|
|
205
207
|
# Returns a Boolean
|
206
208
|
#
|
207
209
|
def eql?(other)
|
208
|
-
other.is_a?(Chamber::Settings)
|
209
|
-
data == other.data
|
210
|
+
other.is_a?(Chamber::Settings) &&
|
211
|
+
data == other.data &&
|
210
212
|
namespaces == other.namespaces
|
211
213
|
end
|
212
214
|
|
213
215
|
def securable
|
214
216
|
Settings.new(metadata.merge(
|
215
217
|
settings: raw_data,
|
216
|
-
pre_filters: [Filters::SecureFilter]
|
218
|
+
pre_filters: [Filters::SecureFilter],
|
219
|
+
))
|
217
220
|
end
|
218
221
|
|
219
222
|
def secure
|
220
223
|
Settings.new(metadata.merge(
|
221
224
|
settings: raw_data,
|
222
225
|
pre_filters: [Filters::EncryptionFilter],
|
223
|
-
post_filters: [Filters::TranslateSecureKeysFilter]
|
226
|
+
post_filters: [Filters::TranslateSecureKeysFilter],
|
227
|
+
))
|
224
228
|
end
|
225
229
|
|
226
230
|
def insecure
|
227
231
|
Settings.new(metadata.merge(
|
228
232
|
settings: raw_data,
|
229
233
|
pre_filters: [Filters::InsecureFilter],
|
230
|
-
post_filters: [Filters::TranslateSecureKeysFilter]
|
234
|
+
post_filters: [Filters::TranslateSecureKeysFilter],
|
235
|
+
))
|
231
236
|
end
|
232
237
|
|
233
238
|
protected
|
@@ -247,14 +252,14 @@ class Settings
|
|
247
252
|
end
|
248
253
|
|
249
254
|
def raw_data
|
250
|
-
@filtered_raw_data ||= pre_filters.
|
255
|
+
@filtered_raw_data ||= pre_filters.inject(@raw_data) do |filtered_data, filter|
|
251
256
|
filter.execute({ data: filtered_data }.
|
252
257
|
merge(metadata))
|
253
258
|
end
|
254
259
|
end
|
255
260
|
|
256
261
|
def data
|
257
|
-
@data ||= post_filters.
|
262
|
+
@data ||= post_filters.inject(raw_data) do |filtered_data, filter|
|
258
263
|
filter.execute({ data: filtered_data }.
|
259
264
|
merge(metadata))
|
260
265
|
end
|
data/lib/chamber/version.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'rspectacular'
|
2
3
|
require 'chamber/commands/files'
|
3
4
|
|
@@ -6,8 +7,10 @@ module Commands
|
|
6
7
|
describe Files do
|
7
8
|
let(:rootpath) { ::File.expand_path('./spec/fixtures') }
|
8
9
|
let(:options) do
|
9
|
-
{
|
10
|
-
|
10
|
+
{
|
11
|
+
basepath: rootpath,
|
12
|
+
rootpath: rootpath,
|
13
|
+
}
|
11
14
|
end
|
12
15
|
|
13
16
|
it 'can return values formatted as environment variables' do
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'rspectacular'
|
2
3
|
require 'chamber/commands/secure'
|
3
4
|
require 'fileutils'
|
@@ -9,10 +10,12 @@ describe Secure do
|
|
9
10
|
let(:settings_directory) { rootpath + 'settings' }
|
10
11
|
let(:settings_filename) { settings_directory + 'unencrypted.yml' }
|
11
12
|
let(:options) do
|
12
|
-
{
|
13
|
+
{
|
14
|
+
basepath: rootpath,
|
13
15
|
rootpath: rootpath,
|
14
16
|
encryption_key: rootpath + '../spec_key',
|
15
|
-
shell: double.as_null_object
|
17
|
+
shell: double.as_null_object,
|
18
|
+
}
|
16
19
|
end
|
17
20
|
|
18
21
|
before(:each) do
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'rspectacular'
|
2
3
|
require 'chamber/context_resolver'
|
3
4
|
|
@@ -34,7 +35,7 @@ describe ContextResolver do
|
|
34
35
|
options = ContextResolver.resolve(rootpath: './app',
|
35
36
|
namespaces: 'ns')
|
36
37
|
|
37
|
-
expect(options[:basepath].to_s).to
|
38
|
+
expect(options[:basepath].to_s).to eql './app'
|
38
39
|
end
|
39
40
|
|
40
41
|
it 'always sets the basepath to a Pathname even if it is passed in as a String' do
|
@@ -46,8 +47,10 @@ describe ContextResolver do
|
|
46
47
|
it 'sets the default files if none are passed in' do
|
47
48
|
options = ContextResolver.resolve(basepath: './app')
|
48
49
|
|
49
|
-
expect(options[:files].map(&:to_s)).to eql [
|
50
|
-
|
50
|
+
expect(options[:files].map(&:to_s)).to eql [
|
51
|
+
'./app/settings*.yml',
|
52
|
+
'./app/settings',
|
53
|
+
]
|
51
54
|
end
|
52
55
|
|
53
56
|
it 'can handle if keys are passed as strings' do
|
@@ -64,13 +67,13 @@ describe ContextResolver do
|
|
64
67
|
|
65
68
|
options = ContextResolver.resolve
|
66
69
|
|
67
|
-
expect(options[:rootpath].to_s).to
|
70
|
+
expect(options[:rootpath].to_s).to eql 'my_dir'
|
68
71
|
end
|
69
72
|
|
70
73
|
it 'sets the encryption key to the default if not passed in' do
|
71
74
|
options = ContextResolver.resolve(rootpath: rails_3_path)
|
72
75
|
|
73
|
-
expect(options[:encryption_key].to_s).to
|
76
|
+
expect(options[:encryption_key].to_s).to include 'rails-3-test/.chamber.pub.pem'
|
74
77
|
end
|
75
78
|
|
76
79
|
it 'sets the decryption key to the default if not passed in' do
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'rspectacular'
|
2
3
|
require 'chamber/file_set'
|
3
4
|
require 'fileutils'
|
@@ -16,10 +17,10 @@ describe FileSet do
|
|
16
17
|
|
17
18
|
file_set = FileSet.new files: '/tmp/settings'
|
18
19
|
|
19
|
-
expect(file_set.filenames).to eql
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
expect(file_set.filenames).to eql [
|
21
|
+
'/tmp/settings/another_settings_file.yml',
|
22
|
+
'/tmp/settings/some_settings_file.yml',
|
23
|
+
]
|
23
24
|
|
24
25
|
::FileUtils.rm_rf('/tmp/settings')
|
25
26
|
end
|
@@ -30,10 +31,10 @@ describe FileSet do
|
|
30
31
|
|
31
32
|
file_set = FileSet.new files: '/tmp/settings/*.yml'
|
32
33
|
|
33
|
-
expect(file_set.filenames).to eql
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
expect(file_set.filenames).to eql [
|
35
|
+
'/tmp/settings/another_settings_file.yml',
|
36
|
+
'/tmp/settings/some_settings_file.yml',
|
37
|
+
]
|
37
38
|
|
38
39
|
::FileUtils.rm_rf('/tmp/settings')
|
39
40
|
end
|
@@ -44,10 +45,10 @@ describe FileSet do
|
|
44
45
|
|
45
46
|
file_set = FileSet.new files: '/tmp/settings'
|
46
47
|
|
47
|
-
expect(file_set.filenames).to eql
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
expect(file_set.filenames).to eql [
|
49
|
+
'/tmp/settings/another_settings_file.yml.erb',
|
50
|
+
'/tmp/settings/some_settings_file.yml',
|
51
|
+
]
|
51
52
|
|
52
53
|
::FileUtils.rm_rf('/tmp/settings')
|
53
54
|
end
|
@@ -59,8 +60,8 @@ describe FileSet do
|
|
59
60
|
namespaces: ['blue']
|
60
61
|
|
61
62
|
expect(file_set.filenames).to eql [
|
62
|
-
|
63
|
-
|
63
|
+
'/tmp/settings/settings-blue.yml',
|
64
|
+
]
|
64
65
|
|
65
66
|
::FileUtils.rm_f('/tmp/settings/settings-blue.yml')
|
66
67
|
end
|
@@ -85,8 +86,8 @@ describe FileSet do
|
|
85
86
|
namespaces: ['blue']
|
86
87
|
|
87
88
|
expect(file_set.filenames).to eql [
|
88
|
-
|
89
|
-
|
89
|
+
'/tmp/dash-set/settings.yml',
|
90
|
+
]
|
90
91
|
|
91
92
|
::FileUtils.rm_r('/tmp/dash-set/settings.yml')
|
92
93
|
end
|
@@ -95,13 +96,13 @@ describe FileSet do
|
|
95
96
|
::File.new('/tmp/settings.yml', 'w+')
|
96
97
|
|
97
98
|
file_set = FileSet.new files: [
|
98
|
-
|
99
|
-
|
100
|
-
|
99
|
+
'/tmp/settings.yml',
|
100
|
+
'/tmp/settings.yml',
|
101
|
+
]
|
101
102
|
|
102
103
|
expect(file_set.filenames).to eql [
|
103
|
-
|
104
|
-
|
104
|
+
'/tmp/settings.yml',
|
105
|
+
]
|
105
106
|
|
106
107
|
::FileUtils.rm_f('/tmp/settings.yml')
|
107
108
|
end
|
@@ -111,14 +112,14 @@ describe FileSet do
|
|
111
112
|
::File.new('/tmp/settings/new_file.yml', 'w+')
|
112
113
|
|
113
114
|
file_set = FileSet.new files: [
|
114
|
-
|
115
|
-
|
116
|
-
|
115
|
+
'/tmp/settings.yml',
|
116
|
+
'/tmp/settings/*.yml',
|
117
|
+
]
|
117
118
|
|
118
|
-
expect(file_set.filenames).to eql
|
119
|
-
|
120
|
-
|
121
|
-
|
119
|
+
expect(file_set.filenames).to eql [
|
120
|
+
'/tmp/settings.yml',
|
121
|
+
'/tmp/settings/new_file.yml',
|
122
|
+
]
|
122
123
|
|
123
124
|
::FileUtils.rm_rf('/tmp/settings*')
|
124
125
|
end
|
@@ -128,9 +129,9 @@ describe FileSet do
|
|
128
129
|
|
129
130
|
file_set = FileSet.new files: '/tmp/settings.yml'
|
130
131
|
|
131
|
-
expect(file_set.filenames).to eql
|
132
|
-
|
133
|
-
|
132
|
+
expect(file_set.filenames).to eql [
|
133
|
+
'/tmp/settings.yml',
|
134
|
+
]
|
134
135
|
|
135
136
|
::FileUtils.rm_rf('/tmp/settings*')
|
136
137
|
end
|
@@ -143,17 +144,17 @@ describe FileSet do
|
|
143
144
|
namespaces: %w{blue green}
|
144
145
|
|
145
146
|
expect(file_set.filenames).to eql [
|
146
|
-
|
147
|
-
|
148
|
-
|
147
|
+
'/tmp/settings/settings-blue.yml',
|
148
|
+
'/tmp/settings/settings-green.yml',
|
149
|
+
]
|
149
150
|
|
150
151
|
file_set = FileSet.new files: '/tmp/settings/settings*.yml',
|
151
152
|
namespaces: %w{green blue}
|
152
153
|
|
153
154
|
expect(file_set.filenames).to eql [
|
154
|
-
|
155
|
-
|
156
|
-
|
155
|
+
'/tmp/settings/settings-green.yml',
|
156
|
+
'/tmp/settings/settings-blue.yml',
|
157
|
+
]
|
157
158
|
|
158
159
|
::FileUtils.rm_f('/tmp/settings/settings*.yml')
|
159
160
|
end
|
@@ -166,9 +167,9 @@ describe FileSet do
|
|
166
167
|
namespaces: ['blue']
|
167
168
|
|
168
169
|
expect(file_set.filenames).to eql [
|
169
|
-
|
170
|
-
|
171
|
-
|
170
|
+
'/tmp/settings.yml',
|
171
|
+
'/tmp/settings-blue.yml',
|
172
|
+
]
|
172
173
|
|
173
174
|
::FileUtils.rm_f('/tmp/settings*.yml')
|
174
175
|
end
|
@@ -181,9 +182,9 @@ describe FileSet do
|
|
181
182
|
namespaces: ['blue']
|
182
183
|
|
183
184
|
expect(file_set.filenames).to eql [
|
184
|
-
|
185
|
-
|
186
|
-
|
185
|
+
'/tmp/settings.yml',
|
186
|
+
'/tmp/settings-blue.yml',
|
187
|
+
]
|
187
188
|
|
188
189
|
::FileUtils.rm_f('/tmp/settings*.yml')
|
189
190
|
end
|
@@ -194,14 +195,16 @@ describe FileSet do
|
|
194
195
|
::File.new('/tmp/settings/credentials-development.yml', 'w+')
|
195
196
|
::File.new('/tmp/settings/settings.yml', 'w+')
|
196
197
|
|
197
|
-
file_set = FileSet.new files: [
|
198
|
-
|
198
|
+
file_set = FileSet.new files: [
|
199
|
+
'/tmp/settings/credentials*.yml',
|
200
|
+
'/tmp/settings/settings*.yml',
|
201
|
+
],
|
199
202
|
namespaces: ['development']
|
200
203
|
|
201
204
|
expect(file_set.filenames).to eql [
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
+
'/tmp/settings/credentials-development.yml',
|
206
|
+
'/tmp/settings/settings.yml',
|
207
|
+
]
|
205
208
|
|
206
209
|
::FileUtils.rm_rf('/tmp/settings')
|
207
210
|
end
|
@@ -212,10 +215,10 @@ describe FileSet do
|
|
212
215
|
|
213
216
|
file_set = FileSet.new files: '/tmp/settings/*.yml'
|
214
217
|
|
215
|
-
expect(file_set.filenames).to eql
|
216
|
-
|
217
|
-
|
218
|
-
|
218
|
+
expect(file_set.filenames).to eql [
|
219
|
+
'/tmp/settings/another_settings_file.yml',
|
220
|
+
'/tmp/settings/some_settings_file.yml',
|
221
|
+
]
|
219
222
|
|
220
223
|
::FileUtils.rm_rf('/tmp/settings')
|
221
224
|
end
|