diff options
author | Daniel Baumann <daniel@debian.org> | 2025-01-24 09:00:09 +0100 |
---|---|---|
committer | Daniel Baumann <daniel@debian.org> | 2025-01-24 09:00:09 +0100 |
commit | 4bf4dabd48aa70da3699b9a023f22689645d24f4 (patch) | |
tree | ed8175444649e71c0ed0e5f1d30101786ca2473e /cmd/secrets.go | |
parent | Initial commit. (diff) | |
download | forgejo-act-upstream.tar.xz forgejo-act-upstream.zip |
Adding upstream version 1.24.0.HEADupstream/1.24.0upstreamdebian
Signed-off-by: Daniel Baumann <daniel@debian.org>
Diffstat (limited to 'cmd/secrets.go')
-rw-r--r-- | cmd/secrets.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/cmd/secrets.go b/cmd/secrets.go new file mode 100644 index 0000000..25126f1 --- /dev/null +++ b/cmd/secrets.go @@ -0,0 +1,42 @@ +package cmd + +import ( + "fmt" + "os" + "strings" + + log "github.com/sirupsen/logrus" + "golang.org/x/term" +) + +type secrets map[string]string + +func newSecrets(secretList []string) secrets { + s := make(map[string]string) + for _, secretPair := range secretList { + secretPairParts := strings.SplitN(secretPair, "=", 2) + secretPairParts[0] = strings.ToUpper(secretPairParts[0]) + if strings.ToUpper(s[secretPairParts[0]]) == secretPairParts[0] { + log.Errorf("Secret %s is already defined (secrets are case insensitive)", secretPairParts[0]) + } + if len(secretPairParts) == 2 { + s[secretPairParts[0]] = secretPairParts[1] + } else if env, ok := os.LookupEnv(secretPairParts[0]); ok && env != "" { + s[secretPairParts[0]] = env + } else { + fmt.Printf("Provide value for '%s': ", secretPairParts[0]) + val, err := term.ReadPassword(int(os.Stdin.Fd())) + fmt.Println() + if err != nil { + log.Errorf("failed to read input: %v", err) + os.Exit(1) + } + s[secretPairParts[0]] = string(val) + } + } + return s +} + +func (s secrets) AsMap() map[string]string { + return s +} |