-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsecret.go
37 lines (28 loc) · 856 Bytes
/
secret.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package main
import (
"fmt"
"syscall"
log "github.com/sirupsen/logrus"
"github.com/zalando/go-keyring"
"golang.org/x/term"
)
func promptForSecret(secret string) string {
service := "tired"
var secretValue string
var err error
secretValue, err = keyring.Get(service, secret)
if err == nil && secretValue != "" {
clog.WithFields(log.Fields{"secret": secret}).Info("Got secret value from keyring.")
return secretValue
}
fmt.Printf("New '%v' value: ", secret)
bytespw, _ := term.ReadPassword(int(syscall.Stdin))
secretValue = string(bytespw)
fmt.Print("\n")
err = keyring.Set(service, secret, secretValue)
if err != nil {
clog.WithFields(log.Fields{"secret": secret, "error": err}).Fatal("Can't save password to keyring.")
}
clog.WithFields(log.Fields{"secret": secret}).Info("Secret saved to keyring.")
return secretValue
}