forked from gopasspw/gopass
-
Notifications
You must be signed in to change notification settings - Fork 0
/
context.go
34 lines (27 loc) · 974 Bytes
/
context.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
package termio
import "context"
type contextKey int
const (
ctxKeyPassPromptFunc contextKey = iota
)
// PassPromptFunc is a password prompt function
type PassPromptFunc func(context.Context, string) (string, error)
// WithPassPromptFunc returns a context with the password prompt function set
func WithPassPromptFunc(ctx context.Context, ppf PassPromptFunc) context.Context {
return context.WithValue(ctx, ctxKeyPassPromptFunc, ppf)
}
// HasPassPromptFunc returns true if a value for the pass prompt func has been
// set in this context
func HasPassPromptFunc(ctx context.Context) bool {
ppf, ok := ctx.Value(ctxKeyPassPromptFunc).(PassPromptFunc)
return ok && ppf != nil
}
// GetPassPromptFunc will return the password prompt func or a default one
// Note: will never return nil
func GetPassPromptFunc(ctx context.Context) PassPromptFunc {
ppf, ok := ctx.Value(ctxKeyPassPromptFunc).(PassPromptFunc)
if !ok || ppf == nil {
return promptPass
}
return ppf
}