browserctl 0.8.1 → 0.8.2
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 +7 -0
- data/lib/browserctl/runner.rb +5 -1
- data/lib/browserctl/secret_resolver_registry.rb +6 -2
- data/lib/browserctl/session.rb +6 -1
- data/lib/browserctl/version.rb +1 -1
- data/lib/browserctl/workflow.rb +6 -2
- 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: c5145a9c65fc1dc92bd238aecd15c672286dfa41005333dbaa1e6a613834c9fc
|
|
4
|
+
data.tar.gz: 0f1c56d87a58b41fbdea2e3ec1abf211bcf08a3677348d34565301f15bb76e96
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 162679d64a18bfb241ef1312a7ecfac12cc312407ccd598bc0741c2f985d1754dbdcbe00112ee2cc522a3987b88d8cd34dd4799b48651238efb548348123d58f
|
|
7
|
+
data.tar.gz: 710809a3eb707ad0f1f7300c77cb4b6cfdc4f631dc7f1e02b4b426262164b061d7008ba1901e501483e85a09ecb7be63fd60afa08dba9039b79670e711532fa4
|
data/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,13 @@ All notable changes to this project will be documented in this file.
|
|
|
10
10
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
11
11
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
12
12
|
|
|
13
|
+
## [0.8.2](https://github.com/patrick204nqh/browserctl/compare/v0.8.1...v0.8.2) (2026-04-29)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* v0.8.2 UX polish — describe secret_ref, fallback hint, cross-platform encrypt guidance ([#65](https://github.com/patrick204nqh/browserctl/issues/65)) ([2fe5ea4](https://github.com/patrick204nqh/browserctl/commit/2fe5ea4da0997dc2ab2c3a0696fc819e3fffca40))
|
|
19
|
+
|
|
13
20
|
## [0.8.1](https://github.com/patrick204nqh/browserctl/compare/v0.8.0...v0.8.1) (2026-04-29)
|
|
14
21
|
|
|
15
22
|
|
data/lib/browserctl/runner.rb
CHANGED
|
@@ -109,7 +109,11 @@ module Browserctl
|
|
|
109
109
|
end
|
|
110
110
|
|
|
111
111
|
def format_params(defn)
|
|
112
|
-
defn.param_defs.transform_values
|
|
112
|
+
defn.param_defs.transform_values do |p|
|
|
113
|
+
entry = { required: p.required, secret: p.secret, default: p.default }
|
|
114
|
+
entry[:secret_ref] = p.secret_ref if p.secret_ref
|
|
115
|
+
entry
|
|
116
|
+
end
|
|
113
117
|
end
|
|
114
118
|
end
|
|
115
119
|
end
|
|
@@ -16,9 +16,13 @@ module Browserctl
|
|
|
16
16
|
scheme, reference = secret_ref.split("://", 2)
|
|
17
17
|
resolver = @mutex.synchronize { @registry[scheme] }
|
|
18
18
|
raise SecretResolverError, "unknown secret resolver scheme '#{scheme}'" unless resolver
|
|
19
|
+
|
|
19
20
|
unless resolver.available?
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
msg = "'#{scheme}://' resolver is not available in this environment"
|
|
22
|
+
if scheme == "keychain"
|
|
23
|
+
msg += "\n Use env://YOUR_VAR_NAME to source secrets from environment variables instead."
|
|
24
|
+
end
|
|
25
|
+
raise SecretResolverError, msg
|
|
22
26
|
end
|
|
23
27
|
|
|
24
28
|
resolver.resolve(reference)
|
data/lib/browserctl/session.rb
CHANGED
|
@@ -39,7 +39,12 @@ module Browserctl
|
|
|
39
39
|
def self.prepare_encryption(session_name, metadata, encrypt)
|
|
40
40
|
return [nil, metadata] unless encrypt
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
unless keychain_available?
|
|
43
|
+
raise Browserctl::Error,
|
|
44
|
+
"session encryption requires macOS Keychain (darwin only)\n " \
|
|
45
|
+
"For Linux/CI, omit --encrypt and rely on 0o600 file permissions,\n " \
|
|
46
|
+
"or use BROWSERCTL_EXPORT_PASSPHRASE with session export --encrypt for portable archives."
|
|
47
|
+
end
|
|
43
48
|
|
|
44
49
|
key = SecureRandom.bytes(32)
|
|
45
50
|
keychain_store(session_name, key)
|
data/lib/browserctl/version.rb
CHANGED
data/lib/browserctl/workflow.rb
CHANGED
|
@@ -4,6 +4,7 @@ require "timeout"
|
|
|
4
4
|
require_relative "client"
|
|
5
5
|
require_relative "errors"
|
|
6
6
|
require_relative "secret_resolvers"
|
|
7
|
+
require_relative "session"
|
|
7
8
|
|
|
8
9
|
module Browserctl
|
|
9
10
|
ParamDef = Struct.new(:name, :required, :secret, :default, :secret_ref, keyword_init: true)
|
|
@@ -76,8 +77,11 @@ module Browserctl
|
|
|
76
77
|
invoke(fallback.to_s)
|
|
77
78
|
res2 = @client.session_load(session_name)
|
|
78
79
|
if res2[:error]
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
msg = "session '#{session_name}' still unavailable after running fallback '#{fallback}'"
|
|
81
|
+
unless Session.exist?(session_name)
|
|
82
|
+
msg += "\n Hint: '#{fallback}' did not call save_session(\"#{session_name}\") — add it as the last step."
|
|
83
|
+
end
|
|
84
|
+
raise WorkflowError, msg
|
|
81
85
|
end
|
|
82
86
|
|
|
83
87
|
res2
|