Add shared resolved credential forwarding
This commit is contained in:
29
internal/adapters/subprocess/credentials.go
Normal file
29
internal/adapters/subprocess/credentials.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package subprocess
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
)
|
||||
|
||||
// CredentialEnvironment returns captured secret values and names for a child
|
||||
// invocation. References must already have been resolved by ConfigKit.
|
||||
func CredentialEnvironment(credentials []configkit.Secret) (map[string]string, []string, error) {
|
||||
if len(credentials) == 0 {
|
||||
return nil, nil, nil
|
||||
}
|
||||
overrides := make(map[string]string, len(credentials))
|
||||
names := make([]string, 0, len(credentials))
|
||||
for _, credential := range credentials {
|
||||
name := credential.EnvName()
|
||||
value := credential.Value()
|
||||
if !credential.IsResolved() || value == "" {
|
||||
return nil, nil, fmt.Errorf("credential %q must be resolved and nonempty", name)
|
||||
}
|
||||
if _, exists := overrides[name]; !exists {
|
||||
names = append(names, name)
|
||||
overrides[name] = value
|
||||
}
|
||||
}
|
||||
return overrides, names, nil
|
||||
}
|
||||
Reference in New Issue
Block a user