secretspec 0.15.0-aarch64-linux → 0.17.0-aarch64-linux
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/README.md +9 -0
- data/ext/secretspec/extconf.rb +4 -0
- data/lib/secretspec.rb +11 -5
- data/vendor/libsecretspec_ffi.a +0 -0
- data/vendor/secretspec.h +29 -4
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 81d946255f67745ea2b63e069ce1bf6e61dadb49e19f5cd035a9efeaceaa85f8
|
|
4
|
+
data.tar.gz: 56ddcddd4aea5769b86654226921aa6f20d4430573f4f190bf4aea54adf2a787
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d60a6f402c3131e1d67213cf5bbc8c72f482865f13ca8ffc6e7428542c9d1fed10ae7ffea2f5dd63a8b95e9d1d6d3c4a6b0b2aeff16289ffccd6bdb964db541a
|
|
7
|
+
data.tar.gz: 20a6d71f91633b1527354f86c9a918d7cbe614e214dd84c8ef827a61f4825c0bdbe732bd8448a2a51aab4e6657e2b86b36e4f5ed09b6c44ffbc5b40733088ebf
|
data/README.md
CHANGED
|
@@ -24,6 +24,15 @@ resolved.set_as_env! # export everything into ENV
|
|
|
24
24
|
A missing required secret raises `Secretspec::MissingRequiredError`; any other
|
|
25
25
|
failure raises `Secretspec::Error` (with a stable `#kind`).
|
|
26
26
|
|
|
27
|
+
## Scopes (0.17+)
|
|
28
|
+
|
|
29
|
+
Use `.with_scope("api")` to resolve only a named `[scopes.api]` subset. Both
|
|
30
|
+
`resolved.scope` and `report.scope` return the selected scope:
|
|
31
|
+
|
|
32
|
+
```ruby
|
|
33
|
+
resolved = Secretspec::SecretSpec.builder.with_scope("api").load
|
|
34
|
+
```
|
|
35
|
+
|
|
27
36
|
## Cleanup
|
|
28
37
|
|
|
29
38
|
`as_path` secrets are materialized to temp files that outlive the call. Pass a
|
data/ext/secretspec/extconf.rb
CHANGED
|
@@ -57,5 +57,9 @@ $INCFLAGS << " -I#{include_dir}"
|
|
|
57
57
|
# for the referenced symbols) precedes the system libs it depends on.
|
|
58
58
|
$LOCAL_LIBS << " #{staticlib}"
|
|
59
59
|
$libs = "#{$libs} #{find_native_libs(vendor, repo_root)}"
|
|
60
|
+
# The Windows gem bundles MinGW import libraries next to the staticlib
|
|
61
|
+
# (libwindows.*.a / libwinapi_*.a ship inside cargo registry crates, so an
|
|
62
|
+
# installing machine has them nowhere else); let the linker search vendor/.
|
|
63
|
+
$LIBPATH << vendor if File.directory?(vendor)
|
|
60
64
|
|
|
61
65
|
create_makefile("secretspec/secretspec_ext")
|
data/lib/secretspec.rb
CHANGED
|
@@ -19,7 +19,7 @@ require "secretspec/secretspec_ext"
|
|
|
19
19
|
module Secretspec
|
|
20
20
|
# Response wire-format version this SDK understands. Tracks secretspec-ffi's
|
|
21
21
|
# RESOLVE_SCHEMA_VERSION; a mismatch means the loaded library is incompatible.
|
|
22
|
-
RESOLVE_SCHEMA_VERSION =
|
|
22
|
+
RESOLVE_SCHEMA_VERSION = 2
|
|
23
23
|
|
|
24
24
|
# Wire-format version of the value-free report. Tracks secretspec's
|
|
25
25
|
# RESOLUTION_REPORT_SCHEMA_VERSION.
|
|
@@ -54,7 +54,7 @@ module Secretspec
|
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
# A successful resolution, mirroring the Rust Resolved wrapper.
|
|
57
|
-
Resolved = Struct.new(:provider, :profile, :secrets, :missing_optional) do
|
|
57
|
+
Resolved = Struct.new(:provider, :profile, :secrets, :missing_optional, :scope) do
|
|
58
58
|
# Export each resolved secret into ENV by its declared name. Secrets with no
|
|
59
59
|
# usable value (e.g. under no_values) are skipped rather than deleted from
|
|
60
60
|
# ENV (assigning nil would remove the variable).
|
|
@@ -97,7 +97,7 @@ module Secretspec
|
|
|
97
97
|
# A value-free resolution snapshot. Unlike Resolved, a missing required secret
|
|
98
98
|
# is a "missing_required" status here, not an error, so a report describes a
|
|
99
99
|
# profile even when its secrets are not all available.
|
|
100
|
-
Report = Struct.new(:provider, :profile, :secrets)
|
|
100
|
+
Report = Struct.new(:provider, :profile, :secrets, :scope)
|
|
101
101
|
|
|
102
102
|
# The narrow C ABI, statically linked into the secretspec_ext extension. The
|
|
103
103
|
# Native.c_resolve / c_abi_version C functions are defined in
|
|
@@ -145,6 +145,12 @@ module Secretspec
|
|
|
145
145
|
self
|
|
146
146
|
end
|
|
147
147
|
|
|
148
|
+
# Limit resolution to a named manifest scope (SecretSpec 0.17+).
|
|
149
|
+
def with_scope(scope)
|
|
150
|
+
@request["scope"] = scope if scope
|
|
151
|
+
self
|
|
152
|
+
end
|
|
153
|
+
|
|
148
154
|
def with_reason(reason)
|
|
149
155
|
@request["reason"] = reason if reason
|
|
150
156
|
self
|
|
@@ -178,7 +184,7 @@ module Secretspec
|
|
|
178
184
|
|
|
179
185
|
resolved = Resolved.new(
|
|
180
186
|
response["provider"], response["profile"], secrets,
|
|
181
|
-
response["missing_optional"] || []
|
|
187
|
+
response["missing_optional"] || [], response["scope"]
|
|
182
188
|
)
|
|
183
189
|
return resolved unless block_given?
|
|
184
190
|
|
|
@@ -202,7 +208,7 @@ module Secretspec
|
|
|
202
208
|
s["source_provider"], s["default_applied"],
|
|
203
209
|
s["generated"], s["as_path"])
|
|
204
210
|
end
|
|
205
|
-
Report.new(response["provider"], response["profile"], secrets)
|
|
211
|
+
Report.new(response["provider"], response["profile"], secrets, response["scope"])
|
|
206
212
|
end
|
|
207
213
|
|
|
208
214
|
private
|
data/vendor/libsecretspec_ffi.a
CHANGED
|
Binary file
|
data/vendor/secretspec.h
CHANGED
|
@@ -7,14 +7,39 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Request JSON (all fields optional):
|
|
9
9
|
* { "path": ".../secretspec.toml", "provider": "keyring://",
|
|
10
|
-
* "profile": "production", "
|
|
10
|
+
* "profile": "production", "scope": "api", "reason": "boot",
|
|
11
|
+
* "no_values": false, "mode": "resolve" }
|
|
12
|
+
*
|
|
13
|
+
* "scope" selects a named [scopes] subset of the active profile (0.17+).
|
|
14
|
+
*
|
|
15
|
+
* "mode" selects the response shape and defaults to "resolve":
|
|
16
|
+
*
|
|
17
|
+
* "resolve" the value-carrying resolve response. Set "no_values" to strip
|
|
18
|
+
* the values from it.
|
|
19
|
+
* "report" the value-free resolution report: the inventory/preflight view
|
|
20
|
+
* the CLI exposes as `check --json`.
|
|
21
|
+
*
|
|
22
|
+
* Any other value is rejected with an "invalid_request" error.
|
|
23
|
+
*
|
|
24
|
+
* "no_values" is NOT the same as "mode": "report". A "no_values" resolve blanks
|
|
25
|
+
* the values but keeps the resolve shape: its "secrets" is an object keyed by
|
|
26
|
+
* name, it never says whether a secret is *declared* required, and when a
|
|
27
|
+
* required secret is missing that object is empty. A report's "secrets" is an
|
|
28
|
+
* ARRAY of per-secret entries carrying "name", "required", "status"
|
|
29
|
+
* ("resolved" / "missing_required" / "missing_optional") and provenance, and
|
|
30
|
+
* lists every declared secret whether or not it resolved. "required" is
|
|
31
|
+
* reachable only via "report".
|
|
11
32
|
*
|
|
12
33
|
* Response envelope:
|
|
13
|
-
* { "ok": true, "response": { ...resolve response... } }
|
|
34
|
+
* { "ok": true, "response": { ...resolve response | resolution report... } }
|
|
14
35
|
* { "ok": false, "error": { "kind": "io", "message": "..." } }
|
|
15
36
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
37
|
+
* "ok": false means the call itself failed (bad manifest, provider error,
|
|
38
|
+
* unknown "mode"); a missing required secret is a domain result reported inside
|
|
39
|
+
* an "ok": true response.
|
|
40
|
+
*
|
|
41
|
+
* A resolve response carries secret values unless "no_values" was set; a report
|
|
42
|
+
* never does. Treat returned strings as sensitive and free them promptly.
|
|
18
43
|
*/
|
|
19
44
|
#ifndef SECRETSPEC_H
|
|
20
45
|
#define SECRETSPEC_H
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: secretspec
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.17.0
|
|
5
5
|
platform: aarch64-linux
|
|
6
6
|
authors:
|
|
7
7
|
- Cachix
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-07-
|
|
11
|
+
date: 2026-07-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: 'Ruby bindings for SecretSpec: a native extension that statically links
|
|
14
14
|
the secretspec-ffi C ABI.'
|