aboutsummaryrefslogtreecommitdiff
path: root/cli/tolerant_pflag.go
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tolerant_pflag.go')
-rw-r--r--cli/tolerant_pflag.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/cli/tolerant_pflag.go b/cli/tolerant_pflag.go
new file mode 100644
index 0000000..f2e9f22
--- /dev/null
+++ b/cli/tolerant_pflag.go
@@ -0,0 +1,54 @@
1package cli
2
3import (
4 "log"
5 "time"
6
7 "code.crute.us/mcrute/golib/vault"
8
9 "github.com/spf13/pflag"
10)
11
12type VaultCredential struct {
13 Username, Password string
14}
15
16type TolerantPflagSet struct {
17 *pflag.FlagSet
18}
19
20func (f *TolerantPflagSet) MayGetBool(n string) bool {
21 v, _ := f.GetBool(n)
22 return v
23}
24
25func (f *TolerantPflagSet) MayGetString(n string) string {
26 v, _ := f.GetString(n)
27 return v
28}
29
30func (f *TolerantPflagSet) MayGetDuration(n string) time.Duration {
31 v, _ := f.GetDuration(n)
32 return v
33}
34
35func (f *TolerantPflagSet) MayGetStringSlice(n string) []string {
36 v, _ := f.GetStringSlice(n)
37 return v
38}
39
40func (f *TolerantPflagSet) MayGetVaultCredential(n string) VaultCredential {
41 vk, err := vault.GetVaultKey(f.MayGetString(n))
42 if err != nil {
43 return VaultCredential{}
44 }
45 return VaultCredential{vk.Username, vk.Password}
46}
47
48func (f *TolerantPflagSet) MustGetVaultCredential(n string) VaultCredential {
49 vk, err := vault.GetVaultKey(f.MayGetString(n))
50 if err != nil {
51 log.Fatalf("Error getting %s from vault: %w", n, err)
52 }
53 return VaultCredential{vk.Username, vk.Password}
54}