kreds 1.1.2 → 1.1.3
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
- data/CHANGELOG.md +5 -0
- data/README.md +2 -2
- data/lib/kreds/fetch.rb +13 -3
- data/lib/kreds/inputs.rb +3 -3
- data/lib/kreds/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f416324fdf1fb9493190c26649e33c4a417d0c7e555d34e18ba23d2ee1103432
|
4
|
+
data.tar.gz: d540058194d87c10e1b8206ea3189a432abd77b56b8a831f44ae377346c2cfb0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c08244465f69af24af696c5a5f6af05164052a38b886e35df82afbf10719cb433b112d06834dcd6d2e43ce6cf9e37307275e0f4e678240aea95b6489b16d581f
|
7
|
+
data.tar.gz: f60da9aac5e8f4fdacd4713ceda6b6333e30a2d7f175f8214f486ce03b7dbbd486c7f15349985e1d8b855cdbff1564fff7d1fc265442eb54822b80441a77ba9b
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -9,8 +9,8 @@ Kreds is a simpler, shorter, and safer way to access Rails credentials, with a f
|
|
9
9
|
|
10
10
|
- Simplified credential access with clear error messages
|
11
11
|
- Environment variable fallback support
|
12
|
-
- Environment-scoped credentials access
|
13
|
-
-
|
12
|
+
- Environment-scoped credentials access
|
13
|
+
- Blank value detection and prevention
|
14
14
|
|
15
15
|
**Before and After:**
|
16
16
|
|
data/lib/kreds/fetch.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
module Kreds
|
2
2
|
module Fetch
|
3
3
|
def fetch!(*keys, var: nil, &)
|
4
|
-
symbolized_keys = Kreds::Inputs.process(
|
4
|
+
symbolized_keys = Kreds::Inputs.process(
|
5
|
+
keys, as: :symbol_array, message: "Expected an array of symbols or strings, got `#{keys.inspect}`"
|
6
|
+
)
|
5
7
|
|
6
8
|
path = []
|
7
9
|
|
@@ -10,7 +12,13 @@ module Kreds
|
|
10
12
|
fetch_key(hash, key, path, symbolized_keys)
|
11
13
|
end
|
12
14
|
rescue Kreds::BlankCredentialsError, Kreds::UnknownCredentialsError => e
|
13
|
-
fallback_to_var(
|
15
|
+
fallback_to_var(
|
16
|
+
e,
|
17
|
+
Kreds::Inputs.process(
|
18
|
+
var, as: :non_empty_string, optional: true, message: "Expected a non-empty string, got `#{var.inspect}`"
|
19
|
+
),
|
20
|
+
&
|
21
|
+
)
|
14
22
|
end
|
15
23
|
|
16
24
|
def env_fetch!(*keys, var: nil, &)
|
@@ -18,7 +26,9 @@ module Kreds
|
|
18
26
|
end
|
19
27
|
|
20
28
|
def var!(var, &)
|
21
|
-
value = ENV.fetch(
|
29
|
+
value = ENV.fetch(
|
30
|
+
Kreds::Inputs.process(var, as: :non_empty_string, message: "Expected a non-empty string, got `#{var.inspect}`")
|
31
|
+
)
|
22
32
|
|
23
33
|
return raise_or_yield(Kreds::BlankEnvironmentVariableError.new("Blank value in environment variable: #{var.inspect}"), &) if value.blank?
|
24
34
|
|
data/lib/kreds/inputs.rb
CHANGED
@@ -8,17 +8,17 @@ module Kreds
|
|
8
8
|
|
9
9
|
TYPES = {
|
10
10
|
symbol_array: -> { self::Array.of(self::Coercible::Symbol).constrained(min_size: 1) },
|
11
|
-
|
11
|
+
non_empty_string: -> { self::Strict::String.constrained(min_size: 1) },
|
12
12
|
boolean: -> { self::Strict::Bool }
|
13
13
|
}.freeze
|
14
14
|
|
15
|
-
def process(value, as:, optional: false)
|
15
|
+
def process(value, as:, optional: false, error: Kreds::InvalidArgumentError, message: nil)
|
16
16
|
checker = type_for(as)
|
17
17
|
checker = checker.optional if optional
|
18
18
|
|
19
19
|
checker[value]
|
20
20
|
rescue Dry::Types::CoercionError => e
|
21
|
-
raise
|
21
|
+
raise error, message || e.message
|
22
22
|
end
|
23
23
|
|
24
24
|
private
|
data/lib/kreds/version.rb
CHANGED