kreds 1.0.0 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bd360d0e070613f6faa2659de2f39cd477f4e4f4e9b2b8b040698ad6569b7b19
4
- data.tar.gz: 6a8d3d9693fe0d81a8fa44495db0e147704f9db807620f83716166579d7a17c0
3
+ metadata.gz: de9b5e5f467bfe86da6487a402620213b7108dbcd90d64a5c088e8f563dc466e
4
+ data.tar.gz: c147c37a7ca2ea09f166022b0ffb294c5f452a33392a8d15edfe07ed30167a40
5
5
  SHA512:
6
- metadata.gz: f97393f35e509b0c25ed21edcbb412ccf15dee7afc06542fc81d166d14a227d6255be674bc7463bb4cd6bcb8f7d163ce645ae808e7ad5ce1657f3bc33bb45e71
7
- data.tar.gz: f8ea75d9b59928922488e95a49d7a0de81e61ac2aaf412384727644844623174a8b628f539bcf9a685889e20ae18ebfea4c213db12d83e0bf0a7eb43f3d30c39
6
+ metadata.gz: 164bdf54d2f0ec9037cc568c6749bd22fdca2fed40388a74f9a35a8954cf34cc74697efdb2516fa57c34966c194f9d65c466c0a447f6ca4489504c1d3c913bb3
7
+ data.tar.gz: 90850b11cbe6f9890dd7e60752251af0f3e323cf7c87a460677fef764a80421690d9de2979fd0e0761ffd29295fc686501385fd8e911bd6c35af8aaad51b8383
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## v1.1.0
2
+
3
+ - Added block support for fallback behavior in all fetching methods
4
+
1
5
  ## v1.0.0
2
6
 
3
7
  - Dropped support for Rails 7.0
data/README.md CHANGED
@@ -52,7 +52,7 @@ If all keys are correct but the value is blank, Kreds will raise `Kreds::BlankCr
52
52
  You can optionally provide a fallback environment variable:
53
53
 
54
54
  ```ruby
55
- Kreds.fetch!(:aws, :s3, :credentials, :access_key_id, env_var: "AWS_ACCESS_KEY_ID")
55
+ Kreds.fetch!(:aws, :s3, :credentials, :access_key_id, var: "AWS_ACCESS_KEY_ID")
56
56
  ```
57
57
 
58
58
  If the key is missing or blank in credentials, Kreds will attempt to fetch the value from the specified environment variable.
@@ -85,6 +85,18 @@ You can also provide an optional fallback environment variable:
85
85
  Kreds.env_fetch!(:recaptcha, :site_key, var: "RECAPTCHA_SITE_KEY")
86
86
  ```
87
87
 
88
+ ### Pass a block on failure
89
+
90
+ You can pass a block to `fetch!`, `env_fetch!`, and `var!`, which will be executed if the method fails to retrieve the value.
91
+
92
+ ```ruby
93
+ Kreds.fetch!(:aws, :s3, :credentials, :access_key_id) do
94
+ raise MyCustomError, "Custom error message"
95
+ end
96
+
97
+ Kreds.var!("THREADS") { 1 }
98
+ ```
99
+
88
100
  ### Show credentials
89
101
 
90
102
  To inspect all credentials as a hash:
data/lib/kreds/fetch.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Kreds
2
2
  module Fetch
3
- def fetch!(*keys, var: nil)
3
+ def fetch!(*keys, var: nil, &)
4
4
  validate_keys!(keys)
5
5
  validate_var!(var)
6
6
 
@@ -11,18 +11,21 @@ module Kreds
11
11
  fetch_key(hash, key, path, keys)
12
12
  end
13
13
  rescue Kreds::BlankCredentialsError, Kreds::UnknownCredentialsError => e
14
- fallback_to_var(e, var)
14
+ fallback_to_var(e, var, &)
15
15
  end
16
16
 
17
- def env_fetch!(*keys, var: nil)
18
- fetch!(Rails.env, *keys, var: var)
17
+ def env_fetch!(*keys, var: nil, &)
18
+ fetch!(Rails.env, *keys, var: var, &)
19
19
  end
20
20
 
21
- def var!(var)
21
+ def var!(var, &)
22
22
  validate_var!(var)
23
23
 
24
24
  result, success = check_var(var)
25
- success ? result : raise(result)
25
+
26
+ return result if success
27
+
28
+ raise_or_yield(result, &)
26
29
  end
27
30
 
28
31
  private
@@ -50,11 +53,16 @@ module Kreds
50
53
  raise Kreds::UnknownCredentialsError, "Credentials key not found: [:#{path.join("][:")}]"
51
54
  end
52
55
 
53
- def fallback_to_var(error, var)
54
- return raise error if var.blank?
56
+ def fallback_to_var(error, var, &)
57
+ if var.present?
58
+ result, success = check_var(var)
55
59
 
56
- result, success = check_var(var)
57
- success ? result : raise(Kreds::Error, [error.message, result.message].join(", "))
60
+ return result if success
61
+
62
+ raise_or_yield(Kreds::Error.new([error.message, result.message].join(", ")), &)
63
+ end
64
+
65
+ raise_or_yield(error, &)
58
66
  end
59
67
 
60
68
  def check_var(var)
@@ -66,5 +74,9 @@ module Kreds
66
74
  rescue KeyError
67
75
  [Kreds::UnknownEnvironmentVariableError.new("Environment variable not found: #{var.inspect}"), false]
68
76
  end
77
+
78
+ def raise_or_yield(error, &)
79
+ block_given? ? yield : raise(error)
80
+ end
69
81
  end
70
82
  end
data/lib/kreds/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Kreds
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kreds
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - enjaku4