kreds 1.1.6 → 1.1.7
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/kreds.gemspec +4 -4
- data/lib/kreds/fetch.rb +3 -13
- data/lib/kreds/inputs.rb +13 -16
- data/lib/kreds/version.rb +1 -1
- metadata +6 -20
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 25d3eedf22bd754fdefe50c162f437fbced4417d1dc22170f7a63e950c5ccf27
|
|
4
|
+
data.tar.gz: 21e488de4ad9d8f7777e5215e10709e2089cf65a97c43f075ccb23871dbf593d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 94388daa3c0f6415135f437c4d76d2097492d7963e195bc038b5e1a6a2ae06838e60638234bd88c0aa51de87706ded1254fcb3627e6a4f561da882bb7a2191d3
|
|
7
|
+
data.tar.gz: 80c30b05d7aca780b1d1b4eee7766516daf110885ebdc1e744189906032355a116b1e082d28783851e98312639d2b377ac3ef1a485a5df99a8b6255e16c36064
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://github.com/enjaku4/kreds/actions/workflows/ci.yml)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
|
|
8
|
-
Rails credentials are a convenient way to store secrets, but retrieving them could be more intuitive
|
|
8
|
+
Rails credentials are a convenient way to store secrets, but retrieving them could be more intuitive. Kreds provides a simpler, shorter, and safer way to access Rails credentials with blank value detection and clear human-readable error messages.
|
|
9
9
|
|
|
10
10
|
**Example of Usage:**
|
|
11
11
|
|
|
@@ -54,7 +54,7 @@ gem "kreds"
|
|
|
54
54
|
|
|
55
55
|
Install the gem:
|
|
56
56
|
|
|
57
|
-
```
|
|
57
|
+
```shell
|
|
58
58
|
bundle install
|
|
59
59
|
```
|
|
60
60
|
|
data/kreds.gemspec
CHANGED
|
@@ -4,18 +4,19 @@ Gem::Specification.new do |spec|
|
|
|
4
4
|
spec.name = "kreds"
|
|
5
5
|
spec.version = Kreds::VERSION
|
|
6
6
|
spec.authors = ["enjaku4"]
|
|
7
|
-
spec.email = ["
|
|
7
|
+
spec.email = ["contact@brownbox.dev"]
|
|
8
8
|
spec.homepage = "https://github.com/enjaku4/kreds"
|
|
9
9
|
spec.metadata["homepage_uri"] = spec.homepage
|
|
10
10
|
spec.metadata["source_code_uri"] = spec.homepage
|
|
11
11
|
spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/CHANGELOG.md"
|
|
12
12
|
spec.metadata["bug_tracker_uri"] = "#{spec.homepage}/issues"
|
|
13
13
|
spec.metadata["documentation_uri"] = "#{spec.homepage}/blob/master/README.md"
|
|
14
|
+
spec.metadata["mailing_list_uri"] = "#{spec.homepage}/discussions"
|
|
14
15
|
spec.metadata["rubygems_mfa_required"] = "true"
|
|
15
16
|
spec.summary = "The missing shorthand for Rails credentials"
|
|
16
|
-
spec.description = "
|
|
17
|
+
spec.description = "Simpler and safer Rails credentials access with blank value detection and clear error messages"
|
|
17
18
|
spec.license = "MIT"
|
|
18
|
-
spec.required_ruby_version = ">= 3.2", "<
|
|
19
|
+
spec.required_ruby_version = ">= 3.2", "< 4.1"
|
|
19
20
|
|
|
20
21
|
spec.files = [
|
|
21
22
|
"kreds.gemspec", "README.md", "CHANGELOG.md", "LICENSE.txt"
|
|
@@ -23,6 +24,5 @@ Gem::Specification.new do |spec|
|
|
|
23
24
|
|
|
24
25
|
spec.require_paths = ["lib"]
|
|
25
26
|
|
|
26
|
-
spec.add_dependency "dry-types", "~> 1.7"
|
|
27
27
|
spec.add_dependency "rails", ">= 7.1", "< 8.2"
|
|
28
28
|
end
|
data/lib/kreds/fetch.rb
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
module Kreds
|
|
2
2
|
module Fetch
|
|
3
3
|
def fetch!(*keys, var: nil, &)
|
|
4
|
-
symbolized_keys = Kreds::Inputs.process(
|
|
5
|
-
keys, as: :symbol_array, message: "Expected an array of symbols or strings, got `#{keys.inspect}`"
|
|
6
|
-
)
|
|
4
|
+
symbolized_keys = Kreds::Inputs.process(keys, as: :symbol_array)
|
|
7
5
|
|
|
8
6
|
path = []
|
|
9
7
|
|
|
@@ -12,13 +10,7 @@ module Kreds
|
|
|
12
10
|
fetch_key(hash, key, path, symbolized_keys)
|
|
13
11
|
end
|
|
14
12
|
rescue Kreds::BlankCredentialsError, Kreds::UnknownCredentialsError => e
|
|
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
|
-
)
|
|
13
|
+
fallback_to_var(e, Kreds::Inputs.process(var, as: :non_empty_string, optional: true), &)
|
|
22
14
|
end
|
|
23
15
|
|
|
24
16
|
def env_fetch!(*keys, var: nil, &)
|
|
@@ -26,9 +18,7 @@ module Kreds
|
|
|
26
18
|
end
|
|
27
19
|
|
|
28
20
|
def var!(var, &)
|
|
29
|
-
value = ENV.fetch(
|
|
30
|
-
Kreds::Inputs.process(var, as: :non_empty_string, message: "Expected a non-empty string, got `#{var.inspect}`")
|
|
31
|
-
)
|
|
21
|
+
value = ENV.fetch(Kreds::Inputs.process(var, as: :non_empty_string))
|
|
32
22
|
|
|
33
23
|
return raise_or_yield(Kreds::BlankEnvironmentVariableError.new("Blank value in environment variable: #{var.inspect}"), &) if value.blank?
|
|
34
24
|
|
data/lib/kreds/inputs.rb
CHANGED
|
@@ -1,28 +1,25 @@
|
|
|
1
|
-
require "dry-types"
|
|
2
|
-
|
|
3
1
|
module Kreds
|
|
4
2
|
module Inputs
|
|
5
3
|
extend self
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
def process(value, as:, optional: false)
|
|
6
|
+
return value if optional && value.nil?
|
|
7
|
+
|
|
8
|
+
send(as, value)
|
|
9
|
+
end
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
symbol_array: self::Array.of(self::Coercible::Symbol).constrained(min_size: 1),
|
|
11
|
-
non_empty_string: self::Strict::String.constrained(min_size: 1),
|
|
12
|
-
boolean: self::Strict::Bool
|
|
13
|
-
}.freeze
|
|
11
|
+
private
|
|
14
12
|
|
|
15
|
-
def
|
|
16
|
-
|
|
17
|
-
checker = checker.optional if optional
|
|
13
|
+
def symbol_array(value)
|
|
14
|
+
return value.map(&:to_sym) if value.is_a?(Array) && value.any? && value.all? { _1.is_a?(String) || _1.is_a?(Symbol) }
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
rescue Dry::Types::CoercionError => e
|
|
21
|
-
raise error, message || e.message
|
|
16
|
+
raise(Kreds::InvalidArgumentError, "Expected an array of symbols or strings, got `#{value.inspect}`")
|
|
22
17
|
end
|
|
23
18
|
|
|
24
|
-
|
|
19
|
+
def non_empty_string(value)
|
|
20
|
+
return value if value.is_a?(String) && value.present?
|
|
25
21
|
|
|
26
|
-
|
|
22
|
+
raise(Kreds::InvalidArgumentError, "Expected a non-empty string, got `#{value.inspect}`")
|
|
23
|
+
end
|
|
27
24
|
end
|
|
28
25
|
end
|
data/lib/kreds/version.rb
CHANGED
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.1.
|
|
4
|
+
version: 1.1.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- enjaku4
|
|
@@ -9,20 +9,6 @@ bindir: bin
|
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
|
-
- !ruby/object:Gem::Dependency
|
|
13
|
-
name: dry-types
|
|
14
|
-
requirement: !ruby/object:Gem::Requirement
|
|
15
|
-
requirements:
|
|
16
|
-
- - "~>"
|
|
17
|
-
- !ruby/object:Gem::Version
|
|
18
|
-
version: '1.7'
|
|
19
|
-
type: :runtime
|
|
20
|
-
prerelease: false
|
|
21
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
-
requirements:
|
|
23
|
-
- - "~>"
|
|
24
|
-
- !ruby/object:Gem::Version
|
|
25
|
-
version: '1.7'
|
|
26
12
|
- !ruby/object:Gem::Dependency
|
|
27
13
|
name: rails
|
|
28
14
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -43,11 +29,10 @@ dependencies:
|
|
|
43
29
|
- - "<"
|
|
44
30
|
- !ruby/object:Gem::Version
|
|
45
31
|
version: '8.2'
|
|
46
|
-
description:
|
|
47
|
-
|
|
48
|
-
detection
|
|
32
|
+
description: Simpler and safer Rails credentials access with blank value detection
|
|
33
|
+
and clear error messages
|
|
49
34
|
email:
|
|
50
|
-
-
|
|
35
|
+
- contact@brownbox.dev
|
|
51
36
|
executables: []
|
|
52
37
|
extensions: []
|
|
53
38
|
extra_rdoc_files: []
|
|
@@ -70,6 +55,7 @@ metadata:
|
|
|
70
55
|
changelog_uri: https://github.com/enjaku4/kreds/blob/master/CHANGELOG.md
|
|
71
56
|
bug_tracker_uri: https://github.com/enjaku4/kreds/issues
|
|
72
57
|
documentation_uri: https://github.com/enjaku4/kreds/blob/master/README.md
|
|
58
|
+
mailing_list_uri: https://github.com/enjaku4/kreds/discussions
|
|
73
59
|
rubygems_mfa_required: 'true'
|
|
74
60
|
rdoc_options: []
|
|
75
61
|
require_paths:
|
|
@@ -81,7 +67,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
81
67
|
version: '3.2'
|
|
82
68
|
- - "<"
|
|
83
69
|
- !ruby/object:Gem::Version
|
|
84
|
-
version: '
|
|
70
|
+
version: '4.1'
|
|
85
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
72
|
requirements:
|
|
87
73
|
- - ">="
|