@@ -11,55 +11,69 @@ import (
11
11
"github.com/manifoldco/promptui"
12
12
)
13
13
14
- var secretsFilename string
14
+ var (
15
+ Version = "v0.0.0-dev"
16
+ secretsFilename string
17
+ )
15
18
16
19
func main () {
20
+ showVersion := flag .Bool ("version" , false , "show ringo version" )
17
21
flag .StringVar (& secretsFilename , "filename" , "config/secrets.yml" , "the file containing the secrets to decrypt" )
18
22
flag .Parse ()
19
23
24
+ if * showVersion {
25
+ fmt .Print (Version )
26
+ os .Exit (1 )
27
+ }
28
+
20
29
if _ , err := os .Open (secretsFilename ); err != nil {
21
30
if errors .Is (err , os .ErrNotExist ) {
22
31
fmt .Println ("'config/secrets.yml' file not found!\n You can use the -filename flag for a different path" )
23
32
return
24
33
}
25
- panic (err )
34
+ fmt .Print (err )
35
+ os .Exit (1 )
26
36
}
27
37
28
38
if err := biscuit .KmsCallerIdentity (); err != nil {
29
39
fmt .Print (err )
30
40
os .Exit (1 )
31
41
}
32
42
33
- list , err := biscuit .List (secretsFilename )
43
+ secrets , err := biscuit .List (secretsFilename )
34
44
if err != nil {
35
45
fmt .Print (err )
36
46
os .Exit (1 )
37
47
}
38
48
39
- prompt := promptui.Select {
40
- Label : "Select a secret to decrypt" ,
41
- Items : list ,
42
- Size : 10 ,
43
- Searcher : func (input string , index int ) bool {
44
- name := strings .Replace (strings .ToLower (list [index ]), " " , "" , - 1 )
45
- input = strings .Replace (strings .ToLower (input ), " " , "" , - 1 )
46
- return strings .Contains (name , input )
47
- },
48
- }
49
-
50
- _ , result , err := prompt .Run ()
49
+ selectedSecret , err := loadSecretsSelection (secrets )
51
50
if err != nil {
52
51
// this happens when you ^C the prompt
53
52
return
54
53
}
55
54
56
- fmt .Printf ("Decrypting %q\n " , result )
57
-
58
- res , err := biscuit .Get (secretsFilename , result )
55
+ fmt .Printf ("Decrypting %q\n " , selectedSecret )
56
+ res , err := biscuit .Get (secretsFilename , selectedSecret )
59
57
if err != nil {
60
58
fmt .Print (err )
61
59
os .Exit (1 )
62
60
}
63
61
64
62
fmt .Println (res )
65
63
}
64
+
65
+ func loadSecretsSelection (secrets []string ) (string , error ) {
66
+ prompt := promptui.Select {
67
+ Label : "Select a secret to decrypt" ,
68
+ Items : secrets ,
69
+ Size : 10 ,
70
+ Searcher : func (input string , index int ) bool {
71
+ name := strings .Replace (strings .ToLower (secrets [index ]), " " , "" , - 1 )
72
+ input = strings .Replace (strings .ToLower (input ), " " , "" , - 1 )
73
+ return strings .Contains (name , input )
74
+ },
75
+ }
76
+
77
+ _ , result , err := prompt .Run ()
78
+ return result , err
79
+ }
0 commit comments