chamber 2.12.3 → 2.14.1

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 (57) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.md +101 -26
  5. data/lib/chamber.rb +82 -10
  6. data/lib/chamber/adapters/cloud/circle_ci.rb +85 -0
  7. data/lib/chamber/adapters/cloud/heroku.rb +74 -0
  8. data/lib/chamber/binary/circle_ci.rb +122 -0
  9. data/lib/chamber/binary/heroku.rb +45 -16
  10. data/lib/chamber/binary/runner.rb +42 -26
  11. data/lib/chamber/binary/travis.rb +5 -3
  12. data/lib/chamber/commands/base.rb +10 -16
  13. data/lib/chamber/commands/cloud/base.rb +35 -0
  14. data/lib/chamber/commands/{heroku → cloud}/clear.rb +6 -8
  15. data/lib/chamber/commands/cloud/compare.rb +26 -0
  16. data/lib/chamber/commands/cloud/pull.rb +29 -0
  17. data/lib/chamber/commands/cloud/push.rb +44 -0
  18. data/lib/chamber/commands/comparable.rb +2 -2
  19. data/lib/chamber/commands/compare.rb +6 -9
  20. data/lib/chamber/commands/initialize.rb +26 -22
  21. data/lib/chamber/commands/securable.rb +10 -10
  22. data/lib/chamber/commands/secure.rb +2 -2
  23. data/lib/chamber/commands/show.rb +8 -8
  24. data/lib/chamber/commands/sign.rb +2 -2
  25. data/lib/chamber/commands/verify.rb +2 -2
  26. data/lib/chamber/configuration.rb +8 -3
  27. data/lib/chamber/context_resolver.rb +16 -7
  28. data/lib/chamber/encryption_methods/ssl.rb +21 -12
  29. data/lib/chamber/file.rb +22 -20
  30. data/lib/chamber/file_set.rb +21 -11
  31. data/lib/chamber/files/signature.rb +31 -23
  32. data/lib/chamber/filters/decryption_filter.rb +13 -11
  33. data/lib/chamber/filters/encryption_filter.rb +17 -8
  34. data/lib/chamber/filters/environment_filter.rb +12 -14
  35. data/lib/chamber/filters/failed_decryption_filter.rb +6 -6
  36. data/lib/chamber/filters/insecure_filter.rb +12 -3
  37. data/lib/chamber/filters/namespace_filter.rb +5 -5
  38. data/lib/chamber/filters/secure_filter.rb +5 -5
  39. data/lib/chamber/filters/translate_secure_keys_filter.rb +5 -5
  40. data/lib/chamber/instance.rb +54 -30
  41. data/lib/chamber/integrations/rails.rb +1 -1
  42. data/lib/chamber/integrations/sinatra.rb +6 -6
  43. data/lib/chamber/key_pair.rb +8 -8
  44. data/lib/chamber/keys/base.rb +35 -41
  45. data/lib/chamber/keys/decryption.rb +8 -14
  46. data/lib/chamber/keys/encryption.rb +8 -14
  47. data/lib/chamber/namespace_set.rb +2 -4
  48. data/lib/chamber/settings.rb +86 -56
  49. data/lib/chamber/types/secured.rb +8 -10
  50. data/lib/chamber/version.rb +1 -1
  51. data/templates/settings.yml +2 -0
  52. metadata +51 -41
  53. metadata.gz.sig +0 -0
  54. data/lib/chamber/commands/heroku.rb +0 -31
  55. data/lib/chamber/commands/heroku/compare.rb +0 -33
  56. data/lib/chamber/commands/heroku/pull.rb +0 -30
  57. data/lib/chamber/commands/heroku/push.rb +0 -27
@@ -3,21 +3,19 @@
3
3
  require 'active_support/json'
4
4
  require 'chamber'
5
5
 
6
- # rubocop:disable Lint/HandleExceptions, Layout/EmptyLinesAroundModuleBody
7
6
  module Chamber
8
-
9
7
  begin
10
8
  require 'active_record/type/value'
11
9
 
12
10
  CHAMBER_TYPE_VALUE_SUPERCLASS = ActiveRecord::Type::Value
13
- rescue LoadError
11
+ rescue LoadError # rubocop:disable Lint/SuppressedException
14
12
  end
15
13
 
16
14
  begin
17
15
  require 'active_model/type/value'
18
16
 
19
17
  CHAMBER_TYPE_VALUE_SUPERCLASS = ActiveModel::Type::Value
20
- rescue LoadError
18
+ rescue LoadError # rubocop:disable Lint/SuppressedException
21
19
  end
22
20
 
23
21
  module Types
@@ -25,11 +23,12 @@ class Secured < CHAMBER_TYPE_VALUE_SUPERCLASS
25
23
  attr_accessor :decryption_keys,
26
24
  :encryption_keys
27
25
 
28
- def initialize(options = {})
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)
26
+ def initialize(decryption_keys: ::Chamber.configuration.decryption_keys,
27
+ encryption_keys: ::Chamber.configuration.encryption_keys)
28
+ self.decryption_keys = decryption_keys
29
+ self.encryption_keys = encryption_keys
30
+
31
+ super()
33
32
  end
34
33
 
35
34
  def type
@@ -78,4 +77,3 @@ class Secured < CHAMBER_TYPE_VALUE_SUPERCLASS
78
77
  end
79
78
  end
80
79
  end
81
- # rubocop:enable Lint/HandleExceptions, Layout/EmptyLinesAroundModuleBody
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Chamber
4
- VERSION = '2.12.3'
4
+ VERSION = '2.14.1'
5
5
  end
@@ -1,3 +1,5 @@
1
+ ---
2
+
1
3
  development:
2
4
  setting: development_value
3
5
  # The following will become 'secure_setting'
metadata CHANGED
@@ -1,61 +1,63 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chamber
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.12.3
4
+ version: 2.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - thekompanee
8
8
  - jfelchner
9
9
  - stevenhallen
10
10
  - m5rk
11
- autorequire:
11
+ autorequire:
12
12
  bindir: bin
13
13
  cert_chain:
14
14
  - |
15
15
  -----BEGIN CERTIFICATE-----
16
- MIIDrjCCApagAwIBAgIBATANBgkqhkiG9w0BAQUFADBOMRowGAYDVQQDDBFhY2Nv
17
- dW50c19ydWJ5Z2VtczEbMBkGCgmSJomT8ixkARkWC3RoZWtvbXBhbmVlMRMwEQYK
18
- CZImiZPyLGQBGRYDY29tMB4XDTE3MTIzMTIzMzUwNloXDTE4MTIzMTIzMzUwNlow
19
- TjEaMBgGA1UEAwwRYWNjb3VudHNfcnVieWdlbXMxGzAZBgoJkiaJk/IsZAEZFgt0
20
- aGVrb21wYW5lZTETMBEGCgmSJomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEB
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
- MCwGA1UdEgQlMCOBIWFjY291bnRzK3J1YnlnZW1zQHRoZWtvbXBhbmVlLmNvbTAN
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==
16
+ MIIEGDCCAoCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAyMTAwLgYDVQQDDCdhY2Nv
17
+ dW50c19ydWJ5Z2Vtcy9EQz10aGVrb21wYW5lZS9EQz1jb20wHhcNMjAxMjI2MjIy
18
+ NTE5WhcNMjExMjI2MjIyNTE5WjAyMTAwLgYDVQQDDCdhY2NvdW50c19ydWJ5Z2Vt
19
+ cy9EQz10aGVrb21wYW5lZS9EQz1jb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAw
20
+ ggGKAoIBgQD0Z84PxtE0iiWCMTQbnit6D4w55GGBQZnhpWUCJwC0SpQ/jnT0Fsma
21
+ g8oAIdDclLvLC9jzqSAmkOujlpkJMb5NabgkhKFwHi6cVW/gz/cVnISAv8LQTIM5
22
+ c1wyhwX/YhVFaNYNzMizB//kZOeXnv6x0tqV9NY7urHcT6mCwyLeNJIgf44i1Ut+
23
+ mKtXxEyXNbfWQLVY95bVoVg3GOCkycerZN4Oh3zSJM1s+cZRBFlg7GR1AE3Xqs6k
24
+ RhE7yp8ufeghC3bbxgnQrkk8W8Fkkl0/+2JAENpdE4OUepC6dFzDlLZ3UvSk7VHf
25
+ NBRKSuO15kpPo2G55N0HLy8abUzbu5cqjhSbIk9hzD6AmdGCT4DqlsdHI5gOrGP0
26
+ BO6VxGpRuRETKoZ4epPCsXC2XAwk3TJXkuuqYkgdcv8ZR4rPW2CiPvRqgG1YVwWj
27
+ SrIy5Dt/dlMvxdIMiTj6ytAQP1kfdKPFWrJTIA2tspl/eNB+LiYsVdj8d0UU/KTY
28
+ y7jqKMpOE1UCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
29
+ BBYEFO/l0LjdONn2Rr8y4WGyMA37MWVfMA0GCSqGSIb3DQEBCwUAA4IBgQDBGn+T
30
+ HS7SCuLgjCimsT5e3v+Q0VaML1+yJPPqvIVM+HMyTYDpV2ogdAcX1I0lNbUHT9w7
31
+ 5y8pQ7BtYq8LDX6D8EufjvlgpJzunuPpNVh2QQdtkYC2zGabTnk+BJC5scYckBxW
32
+ PxYXSuOxjXAkFe1r9RhPzeMY8lPVh6aEQKNLVkzbpIjoGzUgAPGPZG/ylKSWycwE
33
+ qfHiDXzCAqMzSsb3sMQO1+0euciY1oTOyYCHYKo+gemWEI/p8PyJe/qB2tWC9GYs
34
+ m+we5ul7O4Sq8qKnX0KCqHneqaXakcbuEkhViW6Def432jH8JjYums6EW2mg9570
35
+ pHS20TH4u9o0+5DIhayfGrmAtdtQutQNCclONqBlk7r3/16Y8Lr376dDHrISZlwd
36
+ fdbUKgJXqJeb4GYhiKV07l67XExVjmAklMuA6bcB7mk+aSYUkoWNic4ZYGNjVv88
37
+ AapqLKNG/UPfrJhdhTtFR4ARb8f54rgzONhTaAqVk23Bdp1yoDXaulFCkmU=
36
38
  -----END CERTIFICATE-----
37
- date: 2018-01-27 00:00:00.000000000 Z
39
+ date: 2020-12-31 00:00:00.000000000 Z
38
40
  dependencies:
39
41
  - !ruby/object:Gem::Dependency
40
42
  name: thor
41
43
  requirement: !ruby/object:Gem::Requirement
42
44
  requirements:
43
- - - "<"
44
- - !ruby/object:Gem::Version
45
- version: '0.21'
46
45
  - - ">="
47
46
  - !ruby/object:Gem::Version
48
- version: 0.19.1
47
+ version: 0.20.3
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '2.0'
49
51
  type: :runtime
50
52
  prerelease: false
51
53
  version_requirements: !ruby/object:Gem::Requirement
52
54
  requirements:
53
- - - "<"
54
- - !ruby/object:Gem::Version
55
- version: '0.21'
56
55
  - - ">="
57
56
  - !ruby/object:Gem::Version
58
- version: 0.19.1
57
+ version: 0.20.3
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.0'
59
61
  - !ruby/object:Gem::Dependency
60
62
  name: hashie
61
63
  requirement: !ruby/object:Gem::Requirement
@@ -154,18 +156,21 @@ files:
154
156
  - README.md
155
157
  - bin/chamber
156
158
  - lib/chamber.rb
159
+ - lib/chamber/adapters/cloud/circle_ci.rb
160
+ - lib/chamber/adapters/cloud/heroku.rb
161
+ - lib/chamber/binary/circle_ci.rb
157
162
  - lib/chamber/binary/heroku.rb
158
163
  - lib/chamber/binary/runner.rb
159
164
  - lib/chamber/binary/travis.rb
160
165
  - lib/chamber/commands/base.rb
166
+ - lib/chamber/commands/cloud/base.rb
167
+ - lib/chamber/commands/cloud/clear.rb
168
+ - lib/chamber/commands/cloud/compare.rb
169
+ - lib/chamber/commands/cloud/pull.rb
170
+ - lib/chamber/commands/cloud/push.rb
161
171
  - lib/chamber/commands/comparable.rb
162
172
  - lib/chamber/commands/compare.rb
163
173
  - lib/chamber/commands/files.rb
164
- - lib/chamber/commands/heroku.rb
165
- - lib/chamber/commands/heroku/clear.rb
166
- - lib/chamber/commands/heroku/compare.rb
167
- - lib/chamber/commands/heroku/pull.rb
168
- - lib/chamber/commands/heroku/push.rb
169
174
  - lib/chamber/commands/initialize.rb
170
175
  - lib/chamber/commands/securable.rb
171
176
  - lib/chamber/commands/secure.rb
@@ -212,7 +217,13 @@ licenses:
212
217
  - MIT
213
218
  metadata:
214
219
  allowed_push_host: https://rubygems.org
215
- post_install_message:
220
+ bug_tracker_uri: https://github.com/thekompanee/chamber/issues
221
+ changelog_uri: https://github.com/thekompanee/chamber/blob/master/CHANGELOG.md
222
+ documentation_uri: https://github.com/thekompanee/chamber/tree/releases/v2.13.0
223
+ homepage_uri: https://github.com/thekompanee/chamber
224
+ source_code_uri: https://github.com/thekompanee/chamber
225
+ wiki_uri: https://github.com/thekompanee/chamber/wiki
226
+ post_install_message:
216
227
  rdoc_options: []
217
228
  require_paths:
218
229
  - lib
@@ -220,16 +231,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
220
231
  requirements:
221
232
  - - ">="
222
233
  - !ruby/object:Gem::Version
223
- version: '0'
234
+ version: 2.1.0
224
235
  required_rubygems_version: !ruby/object:Gem::Requirement
225
236
  requirements:
226
237
  - - ">="
227
238
  - !ruby/object:Gem::Version
228
239
  version: '0'
229
240
  requirements: []
230
- rubyforge_project:
231
- rubygems_version: 2.6.14
232
- signing_key:
241
+ rubygems_version: 3.2.3
242
+ signing_key:
233
243
  specification_version: 4
234
244
  summary: A surprisingly configurable convention-based approach to managing your application's
235
245
  custom configuration settings.
metadata.gz.sig CHANGED
Binary file
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler'
4
-
5
- module Chamber
6
- module Commands
7
- module Heroku
8
- def initialize(options = {})
9
- super
10
-
11
- self.app = options[:app]
12
- end
13
-
14
- protected
15
-
16
- attr_accessor :app
17
-
18
- def configuration
19
- @configuration ||= heroku('config --shell').chomp
20
- end
21
-
22
- def heroku(command)
23
- Bundler.with_clean_env { `heroku #{command}#{app_option}` }
24
- end
25
-
26
- def app_option
27
- app ? " --app #{app}" : ''
28
- end
29
- end
30
- end
31
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'chamber/commands/securable'
4
- require 'chamber/commands/heroku'
5
- require 'chamber/commands/comparable'
6
-
7
- module Chamber
8
- module Commands
9
- module Heroku
10
- class Compare < Chamber::Commands::Base
11
- include Chamber::Commands::Securable
12
- include Chamber::Commands::Heroku
13
- include Chamber::Commands::Comparable
14
-
15
- protected
16
-
17
- def first_settings_data
18
- if only_sensitive
19
- secured_settings.to_s(pair_separator: "\n",
20
- value_surrounder: '')
21
- else
22
- current_settings.to_s(pair_separator: "\n",
23
- value_surrounder: '')
24
- end
25
- end
26
-
27
- def second_settings_data
28
- configuration
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'chamber/commands/base'
4
- require 'chamber/commands/heroku'
5
-
6
- module Chamber
7
- module Commands
8
- module Heroku
9
- class Pull < Chamber::Commands::Base
10
- include Chamber::Commands::Heroku
11
-
12
- attr_accessor :target_file
13
-
14
- def initialize(options = {})
15
- super
16
-
17
- self.target_file = options[:into]
18
- end
19
-
20
- def call
21
- if target_file
22
- shell.create_file target_file, configuration
23
- else
24
- configuration
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'chamber/commands/base'
4
- require 'chamber/commands/securable'
5
- require 'chamber/commands/heroku'
6
-
7
- module Chamber
8
- module Commands
9
- module Heroku
10
- class Push < Chamber::Commands::Base
11
- include Chamber::Commands::Securable
12
- include Chamber::Commands::Heroku
13
-
14
- def call
15
- securable_environment_variables.each do |key, value|
16
- if dry_run
17
- shell.say_status 'push', key, :blue
18
- else
19
- shell.say_status 'push', key, :green
20
- heroku("config:set #{key}=#{value.shellescape}")
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end