Skip to content

Commit 3a3daef

Browse files
committed
refactor(secrets): centralize CLI constants
1 parent e4b38a6 commit 3a3daef

File tree

1 file changed

+41
-27
lines changed

1 file changed

+41
-27
lines changed

cmd/secrets/main.go

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
1437
func 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

101118
func 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

137151
func 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

Comments
 (0)