chamber 2.8.0 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|