gopass/pkg/termio/context.go
Dominik Schulz bd59fba0da
Use git identity when pre-populating git config (#2442)
Fixes #968

RELEASE_NOTES=[ENHANCEMENT] Pre-populate ID with git values

Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org>
2022-12-04 17:55:06 +01:00

54 lines
1.4 KiB
Go

package termio
import "context"
type contextKey int
const (
ctxKeyPassPromptFunc contextKey = iota
ctxKeyWorkdir
)
// 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
}
// WithWorkdir returns a context with the working directory option set.
func WithWorkdir(ctx context.Context, dir string) context.Context {
return context.WithValue(ctx, ctxKeyWorkdir, dir)
}
// GetWorkdir returns the working directory from the context or an empty
// string if it is not set.
func GetWorkdir(ctx context.Context) string {
sv, ok := ctx.Value(ctxKeyWorkdir).(string)
if !ok {
return ""
}
return sv
}