@@ -11,15 +11,38 @@ import (
1111 "github.com/EvalOps/keep/pkg/secrets"
1212)
1313
14+ const (
15+ actionGet = "get"
16+ actionSet = "set"
17+ actionList = "list"
18+ actionMigrate = "migrate"
19+ actionInit = "init"
20+
21+ formatText = "text"
22+ formatJSON = "json"
23+
24+ envSecretType = "SECRET_MANAGER_TYPE"
25+ envSecretRegion = "SECRET_MANAGER_REGION"
26+ envSecretPrefix = "SECRET_MANAGER_PREFIX"
27+
28+ logPrefixFailCreate = "Failed to create secret manager"
29+ logPrefixFailGet = "Failed to get secret"
30+ logPrefixFailSet = "Failed to set secret"
31+ logPrefixFailDest = "Failed to create destination manager"
32+ logPrefixUnknownAction = "Unknown action"
33+ logMissingKey = "Key is required for get action"
34+ logMissingKeyValue = "Key and value are required for set action"
35+ )
36+
1437func main () {
1538 var (
16- action = flag .String ("action" , "get" , "Action to perform: get, set, list, migrate" )
39+ action = flag .String ("action" , actionGet , "Action to perform: get, set, list, migrate" )
1740 secretType = flag .String ("type" , "" , "Secret manager type: env, ssm, vault, azure" )
1841 region = flag .String ("region" , "" , "AWS region for SSM" )
1942 prefix = flag .String ("prefix" , "" , "Secret prefix/namespace" )
2043 key = flag .String ("key" , "" , "Secret key" )
2144 value = flag .String ("value" , "" , "Secret value (for set action)" )
22- format = flag .String ("format" , "text" , "Output format: text, json" )
45+ format = flag .String ("format" , formatText , "Output format: text, json" )
2346 vaultAddr = flag .String ("vault-addr" , "" , "Vault server address" )
2447 vaultPath = flag .String ("vault-path" , "" , "Vault secret path" )
2548 azureURL = flag .String ("azure-url" , "" , "Azure Key Vault URL" )
@@ -42,44 +65,44 @@ func main() {
4265
4366 // Override with environment variables if not specified
4467 if cfg .Type == "" {
45- cfg .Type = os .Getenv ("SECRET_MANAGER_TYPE" )
68+ cfg .Type = os .Getenv (envSecretType )
4669 }
4770 if cfg .Region == "" {
48- cfg .Region = os .Getenv ("SECRET_MANAGER_REGION" )
71+ cfg .Region = os .Getenv (envSecretRegion )
4972 }
5073 if cfg .Prefix == "" {
51- cfg .Prefix = os .Getenv ("SECRET_MANAGER_PREFIX" )
74+ cfg .Prefix = os .Getenv (envSecretPrefix )
5275 }
5376
5477 manager , err := secrets .NewManager (cfg )
5578 if err != nil {
56- log .Fatalf ("Failed to create secret manager : %v" , err )
79+ log .Fatalf ("%s : %v" , logPrefixFailCreate , err )
5780 }
5881
5982 switch * action {
60- case "get" :
83+ case actionGet :
6184 if * key == "" {
62- log .Fatal ("Key is required for get action" )
85+ log .Fatal (logMissingKey )
6386 }
6487 handleGet (ctx , manager , * key , * format )
6588
66- case "set" :
89+ case actionSet :
6790 if * key == "" || * value == "" {
68- log .Fatal ("Key and value are required for set action" )
91+ log .Fatal (logMissingKeyValue )
6992 }
7093 handleSet (ctx , manager , * key , * value )
7194
72- case "list" :
95+ case actionList :
7396 handleList (ctx , manager , * format )
7497
75- case "migrate" :
98+ case actionMigrate :
7699 handleMigrate (ctx , cfg )
77100
78- case "init" :
101+ case actionInit :
79102 handleInit (* secretType )
80103
81104 default :
82- log .Fatalf ("Unknown action : %s" , * action )
105+ log .Fatalf ("%s : %s" , logPrefixUnknownAction , * action )
83106 }
84107}
85108
@@ -89,13 +112,7 @@ func handleGet(ctx context.Context, manager secrets.Manager, key, format string)
89112 log .Fatalf ("Failed to get secret %s: %v" , key , err )
90113 }
91114
92- switch format {
93- case "json" :
94- result := map [string ]string {key : secretValue }
95- json .NewEncoder (os .Stdout ).Encode (result )
96- default :
97- fmt .Println (secretValue )
98- }
115+ writeOutput (format , map [string ]string {key : secretValue }, func () { fmt .Println (secretValue ) })
99116}
100117
101118func handleSet (ctx context.Context , manager secrets.Manager , key , value string ) {
@@ -123,15 +140,12 @@ func handleList(ctx context.Context, manager secrets.Manager, format string) {
123140 }
124141 }
125142
126- switch format {
127- case "json" :
128- json .NewEncoder (os .Stdout ).Encode (results )
129- default :
143+ writeOutput (format , results , func () {
130144 fmt .Println ("Available secrets:" )
131145 for key := range results {
132146 fmt .Printf (" %s\n " , key )
133147 }
134- }
148+ })
135149}
136150
137151func handleMigrate (ctx context.Context , cfg secrets.Config ) {
@@ -143,7 +157,7 @@ func handleMigrate(ctx context.Context, cfg secrets.Config) {
143157 // Destination: configured manager
144158 dest , err := secrets .NewManager (cfg )
145159 if err != nil {
146- log .Fatalf ("Failed to create destination manager : %v" , err )
160+ log .Fatalf ("%s : %v" , logPrefixFailDest , err )
147161 }
148162
149163 // Common secrets to migrate
0 commit comments