diff options
Diffstat (limited to 'cli/tolerant_pflag.go')
-rw-r--r-- | cli/tolerant_pflag.go | 54 |
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 @@ | |||
1 | package cli | ||
2 | |||
3 | import ( | ||
4 | "log" | ||
5 | "time" | ||
6 | |||
7 | "code.crute.us/mcrute/golib/vault" | ||
8 | |||
9 | "github.com/spf13/pflag" | ||
10 | ) | ||
11 | |||
12 | type VaultCredential struct { | ||
13 | Username, Password string | ||
14 | } | ||
15 | |||
16 | type TolerantPflagSet struct { | ||
17 | *pflag.FlagSet | ||
18 | } | ||
19 | |||
20 | func (f *TolerantPflagSet) MayGetBool(n string) bool { | ||
21 | v, _ := f.GetBool(n) | ||
22 | return v | ||
23 | } | ||
24 | |||
25 | func (f *TolerantPflagSet) MayGetString(n string) string { | ||
26 | v, _ := f.GetString(n) | ||
27 | return v | ||
28 | } | ||
29 | |||
30 | func (f *TolerantPflagSet) MayGetDuration(n string) time.Duration { | ||
31 | v, _ := f.GetDuration(n) | ||
32 | return v | ||
33 | } | ||
34 | |||
35 | func (f *TolerantPflagSet) MayGetStringSlice(n string) []string { | ||
36 | v, _ := f.GetStringSlice(n) | ||
37 | return v | ||
38 | } | ||
39 | |||
40 | func (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 | |||
48 | func (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 | } | ||