chamber 2.10.2 → 2.11.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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/LICENSE.txt +1 -1
  5. data/lib/chamber.rb +3 -6
  6. data/lib/chamber/binary/heroku.rb +1 -0
  7. data/lib/chamber/binary/runner.rb +29 -13
  8. data/lib/chamber/binary/travis.rb +1 -0
  9. data/lib/chamber/commands/base.rb +10 -9
  10. data/lib/chamber/commands/comparable.rb +1 -0
  11. data/lib/chamber/commands/compare.rb +8 -7
  12. data/lib/chamber/commands/files.rb +1 -0
  13. data/lib/chamber/commands/heroku.rb +1 -0
  14. data/lib/chamber/commands/heroku/clear.rb +2 -1
  15. data/lib/chamber/commands/heroku/compare.rb +1 -0
  16. data/lib/chamber/commands/heroku/pull.rb +3 -4
  17. data/lib/chamber/commands/heroku/push.rb +1 -0
  18. data/lib/chamber/commands/initialize.rb +88 -76
  19. data/lib/chamber/commands/securable.rb +3 -2
  20. data/lib/chamber/commands/secure.rb +3 -1
  21. data/lib/chamber/commands/show.rb +7 -6
  22. data/lib/chamber/commands/travis.rb +1 -0
  23. data/lib/chamber/commands/travis/secure.rb +1 -0
  24. data/lib/chamber/configuration.rb +14 -13
  25. data/lib/chamber/context_resolver.rb +52 -55
  26. data/lib/chamber/encryption_methods/none.rb +4 -2
  27. data/lib/chamber/encryption_methods/public_key.rb +4 -2
  28. data/lib/chamber/encryption_methods/ssl.rb +11 -9
  29. data/lib/chamber/errors/decryption_failure.rb +1 -0
  30. data/lib/chamber/file.rb +27 -18
  31. data/lib/chamber/file_set.rb +14 -13
  32. data/lib/chamber/filters/decryption_filter.rb +48 -18
  33. data/lib/chamber/filters/encryption_filter.rb +32 -22
  34. data/lib/chamber/filters/environment_filter.rb +109 -16
  35. data/lib/chamber/filters/failed_decryption_filter.rb +10 -8
  36. data/lib/chamber/filters/insecure_filter.rb +1 -0
  37. data/lib/chamber/filters/namespace_filter.rb +8 -7
  38. data/lib/chamber/filters/secure_filter.rb +10 -9
  39. data/lib/chamber/filters/translate_secure_keys_filter.rb +10 -9
  40. data/lib/chamber/instance.rb +5 -4
  41. data/lib/chamber/key_pair.rb +82 -0
  42. data/lib/chamber/keys/base.rb +64 -0
  43. data/lib/chamber/keys/decryption.rb +41 -0
  44. data/lib/chamber/keys/encryption.rb +41 -0
  45. data/lib/chamber/namespace_set.rb +10 -9
  46. data/lib/chamber/rails.rb +1 -0
  47. data/lib/chamber/rails/railtie.rb +1 -0
  48. data/lib/chamber/rubinius_fix.rb +1 -0
  49. data/lib/chamber/settings.rb +45 -41
  50. data/lib/chamber/types/secured.rb +14 -12
  51. data/lib/chamber/version.rb +2 -1
  52. metadata +28 -27
  53. metadata.gz.sig +0 -0
  54. data/lib/chamber/decryption_key.rb +0 -52
  55. data/lib/chamber/environmentable.rb +0 -27
  56. data/lib/chamber/filters/boolean_conversion_filter.rb +0 -41
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/json'
2
4
  require 'chamber'
3
5
 
4
- # rubocop:disable Lint/HandleExceptions, Style/EmptyLinesAroundModuleBody
6
+ # rubocop:disable Lint/HandleExceptions, Layout/EmptyLinesAroundModuleBody
5
7
  module Chamber
6
8
 
7
9
  begin
@@ -20,14 +22,14 @@ end
20
22
 
21
23
  module Types
22
24
  class Secured < CHAMBER_TYPE_VALUE_SUPERCLASS
23
- attr_accessor :decryption_key,
24
- :encryption_key
25
+ attr_accessor :decryption_keys,
26
+ :encryption_keys
25
27
 
26
28
  def initialize(options = {})
27
- self.encryption_key = options.fetch(:encryption_key,
28
- Chamber.configuration.encryption_key)
29
- self.decryption_key = options.fetch(:decryption_key,
30
- Chamber.configuration.decryption_key)
29
+ self.encryption_keys = options.fetch(:encryption_keys,
30
+ Chamber.configuration.encryption_keys)
31
+ self.decryption_keys = options.fetch(:decryption_keys,
32
+ Chamber.configuration.decryption_keys)
31
33
  end
32
34
 
33
35
  def type
@@ -54,8 +56,8 @@ class Secured < CHAMBER_TYPE_VALUE_SUPERCLASS
54
56
  return if value.nil?
55
57
 
56
58
  Chamber.decrypt(value,
57
- decryption_key: decryption_key,
58
- encryption_key: encryption_key)
59
+ decryption_keys: decryption_keys,
60
+ encryption_keys: encryption_keys)
59
61
  end
60
62
  alias type_cast_from_database deserialize
61
63
 
@@ -64,8 +66,8 @@ class Secured < CHAMBER_TYPE_VALUE_SUPERCLASS
64
66
 
65
67
  ::ActiveSupport::JSON.encode(
66
68
  Chamber.encrypt(value,
67
- decryption_key: decryption_key,
68
- encryption_key: encryption_key),
69
+ decryption_keys: decryption_keys,
70
+ encryption_keys: encryption_keys),
69
71
  )
70
72
  end
71
73
  alias type_cast_for_database serialize
@@ -76,4 +78,4 @@ class Secured < CHAMBER_TYPE_VALUE_SUPERCLASS
76
78
  end
77
79
  end
78
80
  end
79
- # rubocop:enable Lint/HandleExceptions, Style/EmptyLinesAroundModuleBody
81
+ # rubocop:enable Lint/HandleExceptions, Layout/EmptyLinesAroundModuleBody
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Chamber
3
- VERSION = '2.10.2'.freeze
4
+ VERSION = '2.11.0'
4
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chamber
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.10.2
4
+ version: 2.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thekompanee
@@ -15,26 +15,26 @@ cert_chain:
15
15
  -----BEGIN CERTIFICATE-----
16
16
  MIIDrjCCApagAwIBAgIBATANBgkqhkiG9w0BAQUFADBOMRowGAYDVQQDDBFhY2Nv
17
17
  dW50c19ydWJ5Z2VtczEbMBkGCgmSJomT8ixkARkWC3RoZWtvbXBhbmVlMRMwEQYK
18
- CZImiZPyLGQBGRYDY29tMB4XDTE3MDgwMjIyNTYzMVoXDTE4MDgwMjIyNTYzMVow
18
+ CZImiZPyLGQBGRYDY29tMB4XDTE3MTIzMTIzMzUwNloXDTE4MTIzMTIzMzUwNlow
19
19
  TjEaMBgGA1UEAwwRYWNjb3VudHNfcnVieWdlbXMxGzAZBgoJkiaJk/IsZAEZFgt0
20
20
  aGVrb21wYW5lZTETMBEGCgmSJomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEB
21
- BQADggEPADCCAQoCggEBAMc4QXE2KJeQa7s4KChv4ZAfRhflgunXNocdi2rDNCTv
22
- wLkjoNxDCSkKj8C95dSZVwMy92DqdIbC7ppVTfApXbRxB7BoeY7fWf0EmOQUZ2aa
23
- FS7QR1OrSVkxZ0rJ6B90ANl8DATLbg/xlw5vxiI/OMva5qt1W2Lmwy6Rl+R6Fr2W
24
- z90rabN3hQE6J8UItT06QENBWtkypCAjb3fZ513/lw/BvM3vJjZ4/J/dLLHsbmqw
25
- k6WCuasYf2+Fv7O3/ffdVqKtudf4/Y9B1vVEYIaxoxtsm1UHvVWm+RphyXgsSLe7
26
- UjoAVW+m0wft3rsmuV1BC9mpUztNATGqYLrpPcoN66cCAwEAAaOBljCBkzAJBgNV
27
- HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUxAKay6wGYqob8tw4Nr2GP31+
28
- NckwLAYDVR0RBCUwI4EhYWNjb3VudHMrcnVieWdlbXNAdGhla29tcGFuZWUuY29t
21
+ BQADggEPADCCAQoCggEBAO4TFnvU5R1rchKsNvNEiZUlOTuMtuE+OvMW4aOk3tIP
22
+ JpczhDnRSLpbkpVvsuwfT9PgLjnAuan4oLB0eQVaOAgATFbmAfMsfU0gGtSWlczx
23
+ 6vZjQqyGsW3P1abgGquLVubj409FMxfV18JUZlEmvCE1y9bM61gZ3oHTFPvBDoyX
24
+ 3g9or9nenIa5jcJZd4C3ujW8yOxD+UskgAp+iZI2mIRtt2cJVg2/dnFAgqqp7Xy4
25
+ c4OHZ6hqp2UcvhzuEdUJ6yRA8+Gn3jPOD+uXgUG84FfmU++NVoZyz+r0Nwa+De0H
26
+ IObr8jftfL0PGdR8t1K61g12dZwGmpYTzmoJ1C+yS2ECAwEAAaOBljCBkzAJBgNV
27
+ HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUxmSoxOGENcFagbIbl/CikHCU
28
+ hyMwLAYDVR0RBCUwI4EhYWNjb3VudHMrcnVieWdlbXNAdGhla29tcGFuZWUuY29t
29
29
  MCwGA1UdEgQlMCOBIWFjY291bnRzK3J1YnlnZW1zQHRoZWtvbXBhbmVlLmNvbTAN
30
- BgkqhkiG9w0BAQUFAAOCAQEAekAixhDiCyu4LvqVIEfNkb9DSCsNUQOCgwX2ppj5
31
- dfOq0yEABaMNGs5QJZUGXwXI5PHfSrsh8yNXUvofB9A5CE/M7z1nqifAYyjBhQse
32
- trwZaMUUjIkPVYBCBHnIIRV5r3nQaJRJSBejcJ9rZBiPB+Fy8pumpxTQ4iD28bVh
33
- z3hlqH0da2pJJ8dJpGka9VS5RJMljl4CmPGfp0xBhaP8SiQ0ROudY2hl41CxoM4u
34
- D+octMUn1lW1R5TY2r8c6lPvU4otU+9/N9CQP/qPfjpfdjndm4AT9WOElnbqouuF
35
- CI6ZwNuD9jNYJxrNrpdkOUZVPEr6PoPdArhjNQevWG3zbg==
30
+ BgkqhkiG9w0BAQUFAAOCAQEAoiXGZB5aUV/31MOlrY6Jmfk/4+kIBcgrOCMCi3Nn
31
+ 58fZ/LJDmxs+C3zdW0wHxYf06r3ZcHTulhk1suztLCWyUxyOkGj4IW+LXPRGP66o
32
+ 6qcofBVFh7GXatsgbj87f7a8/opXaeQHqC2X18sCTwOCcO5PjtFrXK7A3v1u2yRj
33
+ rEe6qyTkY77mRgG3f/feAizAvYYkPxOngUwN8rpfKpU5iESS4UUaxIi3AGJHgTw2
34
+ etYUO0DlNY/qYfSfExrgt0W5dZeT09V++WPlYauHw/EZtAB0AsJwVdtIscq0HSvX
35
+ yH9AFp3KIe0v70EXzao/94n+XoDULrHEhqGMo34iS+37ZA==
36
36
  -----END CERTIFICATE-----
37
- date: 2017-12-30 00:00:00.000000000 Z
37
+ date: 2018-01-12 00:00:00.000000000 Z
38
38
  dependencies:
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: thor
@@ -70,14 +70,14 @@ dependencies:
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '3.0'
73
+ version: '3.5'
74
74
  type: :development
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
78
  - - "~>"
79
79
  - !ruby/object:Gem::Version
80
- version: '3.0'
80
+ version: '3.5'
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rspectacular
83
83
  requirement: !ruby/object:Gem::Requirement
@@ -93,33 +93,33 @@ dependencies:
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0.46'
95
95
  - !ruby/object:Gem::Dependency
96
- name: activemodel
96
+ name: activerecord
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: '5.0'
101
+ version: '4.0'
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - "~>"
107
107
  - !ruby/object:Gem::Version
108
- version: '5.0'
108
+ version: '4.0'
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: activesupport
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
113
  - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: '5.0'
115
+ version: '4.0'
116
116
  type: :development
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - "~>"
121
121
  - !ruby/object:Gem::Version
122
- version: '5.0'
122
+ version: '4.0'
123
123
  description: Chamber lets you source your Settings from an arbitrary number of YAML
124
124
  files and provides a simple mechanism for overriding settings from the ENV, which
125
125
  is friendly to how Heroku addons work.
@@ -153,15 +153,12 @@ files:
153
153
  - lib/chamber/commands/travis/secure.rb
154
154
  - lib/chamber/configuration.rb
155
155
  - lib/chamber/context_resolver.rb
156
- - lib/chamber/decryption_key.rb
157
156
  - lib/chamber/encryption_methods/none.rb
158
157
  - lib/chamber/encryption_methods/public_key.rb
159
158
  - lib/chamber/encryption_methods/ssl.rb
160
- - lib/chamber/environmentable.rb
161
159
  - lib/chamber/errors/decryption_failure.rb
162
160
  - lib/chamber/file.rb
163
161
  - lib/chamber/file_set.rb
164
- - lib/chamber/filters/boolean_conversion_filter.rb
165
162
  - lib/chamber/filters/decryption_filter.rb
166
163
  - lib/chamber/filters/encryption_filter.rb
167
164
  - lib/chamber/filters/environment_filter.rb
@@ -171,6 +168,10 @@ files:
171
168
  - lib/chamber/filters/secure_filter.rb
172
169
  - lib/chamber/filters/translate_secure_keys_filter.rb
173
170
  - lib/chamber/instance.rb
171
+ - lib/chamber/key_pair.rb
172
+ - lib/chamber/keys/base.rb
173
+ - lib/chamber/keys/decryption.rb
174
+ - lib/chamber/keys/encryption.rb
174
175
  - lib/chamber/namespace_set.rb
175
176
  - lib/chamber/rails.rb
176
177
  - lib/chamber/rails/railtie.rb
metadata.gz.sig CHANGED
Binary file
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'stringio'
3
-
4
- module Chamber
5
- class DecryptionKey
6
- def initialize(options = {})
7
- self.rootpath = options[:rootpath]
8
- self.filename = options[:filename] || ''
9
- end
10
-
11
- def resolve
12
- if filename.readable?
13
- filename.read
14
- elsif in_environment_variable?
15
- environment_variable
16
- end
17
- end
18
-
19
- def self.resolve(*args)
20
- new(*args).resolve
21
- end
22
-
23
- protected
24
-
25
- attr_accessor :filename,
26
- :rootpath
27
-
28
- def filename=(other)
29
- other_file = Pathname.new(other)
30
-
31
- @filename = if other_file.readable?
32
- other_file
33
- else
34
- default_file
35
- end
36
- end
37
-
38
- private
39
-
40
- def in_environment_variable?
41
- ENV['CHAMBER_KEY']
42
- end
43
-
44
- def environment_variable
45
- ENV['CHAMBER_KEY']
46
- end
47
-
48
- def default_file
49
- Pathname.new(rootpath + '.chamber.pem')
50
- end
51
- end
52
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'hashie/mash'
3
-
4
- module Chamber
5
- module Environmentable
6
- SECURE_KEY_TOKEN = /\A_secure_/
7
-
8
- def with_environment(settings, parent_keys, hash_block, value_block)
9
- environment_hash = Hashie::Mash.new
10
-
11
- settings.each_pair do |key, value|
12
- environment_key = key.to_s.gsub(SECURE_KEY_TOKEN, '')
13
- environment_keys = parent_keys.dup.push(environment_key)
14
-
15
- if value.respond_to? :each_pair
16
- environment_hash.merge!(hash_block.call(key, value, environment_keys))
17
- else
18
- environment_key = environment_keys.join('_').upcase
19
-
20
- environment_hash.merge!(value_block.call(key, value, environment_key))
21
- end
22
- end
23
-
24
- environment_hash
25
- end
26
- end
27
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
- module Chamber
3
- module Filters
4
- class BooleanConversionFilter
5
- def initialize(options = {})
6
- self.data = options.fetch(:data).dup
7
- end
8
-
9
- def self.execute(options = {})
10
- new(options).__send__(:execute)
11
- end
12
-
13
- protected
14
-
15
- attr_accessor :data
16
-
17
- # rubocop:disable Metrics/BlockNesting
18
- def execute(settings = data)
19
- settings.each_pair do |key, value|
20
- if value.respond_to? :each_pair
21
- execute(value)
22
- else
23
- settings[key] = if value.is_a? String
24
- case value
25
- when 'false', 'f', 'no'
26
- false
27
- when 'true', 't', 'yes'
28
- true
29
- else
30
- value
31
- end
32
- else
33
- value
34
- end
35
- end
36
- end
37
- end
38
- # rubocop:enable Metrics/BlockNesting
39
- end
40
- end
41
- end