Skip to content

Commit 2bd1acc

Browse files
committed
🧼 Cleanup code and refactor
1 parent a98374f commit 2bd1acc

5 files changed

Lines changed: 111 additions & 95 deletions

File tree

‎cmd/secrets/decrypt.go‎

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
package secrets
22

33
import (
4-
"fmt"
5-
64
internalIO "github.com/kloudkit/ws-cli/internals/io"
75
internalSecrets "github.com/kloudkit/ws-cli/internals/secrets"
8-
"github.com/kloudkit/ws-cli/internals/styles"
96
"github.com/spf13/cobra"
107
)
118

@@ -14,11 +11,8 @@ var decryptCmd = &cobra.Command{
1411
Short: "Decrypt an encrypted value",
1512
Args: cobra.ExactArgs(1),
1613
RunE: func(cmd *cobra.Command, args []string) error {
17-
outputFile, _ := cmd.Flags().GetString("output")
14+
cfg := getOutputConfig(cmd)
1815
masterKeyFlag, _ := cmd.Flags().GetString("master")
19-
modeStr, _ := cmd.Flags().GetString("mode")
20-
force, _ := cmd.Flags().GetBool("force")
21-
raw, _ := cmd.Flags().GetBool("raw")
2216

2317
masterKey, err := internalSecrets.ResolveMasterKey(masterKeyFlag)
2418
if err != nil {
@@ -37,26 +31,7 @@ var decryptCmd = &cobra.Command{
3731
return err
3832
}
3933

40-
if outputFile == "" {
41-
if raw {
42-
fmt.Fprint(cmd.OutOrStdout(), string(decrypted))
43-
} else {
44-
styles.PrintTitle(cmd.OutOrStdout(), "Decrypted Value")
45-
styles.PrintKeyCode(cmd.OutOrStdout(), "Value", string(decrypted))
46-
}
47-
return nil
48-
}
49-
50-
if err := internalIO.WriteSecureFile(outputFile, decrypted, modeStr, force); err != nil {
51-
return err
52-
}
53-
54-
if !raw {
55-
styles.PrintSuccessWithDetailsCode(cmd.OutOrStdout(), "Secret decrypted successfully", [][]string{
56-
{"Output", outputFile},
57-
})
58-
}
59-
return nil
34+
return handleOutput(cmd, cfg, string(decrypted), "Decrypted Value", "Secret decrypted successfully", false)
6035
},
6136
}
6237

‎cmd/secrets/encrypt.go‎

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66

77
internalIO "github.com/kloudkit/ws-cli/internals/io"
88
internalSecrets "github.com/kloudkit/ws-cli/internals/secrets"
9-
"github.com/kloudkit/ws-cli/internals/styles"
109
"github.com/spf13/cobra"
1110
)
1211

@@ -15,11 +14,8 @@ var encryptCmd = &cobra.Command{
1514
Short: "Encrypt a plaintext value",
1615
Args: cobra.ExactArgs(1),
1716
RunE: func(cmd *cobra.Command, args []string) error {
18-
outputFile, _ := cmd.Flags().GetString("output")
17+
cfg := getOutputConfig(cmd)
1918
masterKeyFlag, _ := cmd.Flags().GetString("master")
20-
modeStr, _ := cmd.Flags().GetString("mode")
21-
force, _ := cmd.Flags().GetBool("force")
22-
raw, _ := cmd.Flags().GetBool("raw")
2319

2420
masterKey, err := internalSecrets.ResolveMasterKey(masterKeyFlag)
2521
if err != nil {
@@ -38,26 +34,7 @@ var encryptCmd = &cobra.Command{
3834
return fmt.Errorf("encryption failed: %w", err)
3935
}
4036

41-
if outputFile == "" {
42-
if raw {
43-
fmt.Fprintln(cmd.OutOrStdout(), encrypted)
44-
} else {
45-
styles.PrintTitle(cmd.OutOrStdout(), "Encrypted Value")
46-
styles.PrintKeyCode(cmd.OutOrStdout(), "Value", encrypted)
47-
}
48-
return nil
49-
}
50-
51-
if err := internalIO.WriteSecureFile(outputFile, []byte(encrypted+"\n"), modeStr, force); err != nil {
52-
return err
53-
}
54-
55-
if !raw {
56-
styles.PrintSuccessWithDetailsCode(cmd.OutOrStdout(), "Secret encrypted successfully", [][]string{
57-
{"Output", outputFile},
58-
})
59-
}
60-
return nil
37+
return handleOutput(cmd, cfg, encrypted, "Encrypted Value", "Secret encrypted successfully", true)
6138
},
6239
}
6340

‎cmd/secrets/generate.go‎

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import (
55
"encoding/base64"
66
"errors"
77
"fmt"
8+
"io"
89

9-
"github.com/kloudkit/ws-cli/internals/io"
1010
"github.com/kloudkit/ws-cli/internals/styles"
1111
"github.com/spf13/cobra"
1212
)
@@ -16,11 +16,8 @@ var generateCmd = &cobra.Command{
1616
Short: "Generate a master key",
1717
Args: cobra.NoArgs,
1818
RunE: func(cmd *cobra.Command, args []string) error {
19+
cfg := getOutputConfig(cmd)
1920
keyLength, _ := cmd.Flags().GetInt("length")
20-
outputFile, _ := cmd.Flags().GetString("output")
21-
modeStr, _ := cmd.Flags().GetString("mode")
22-
force, _ := cmd.Flags().GetBool("force")
23-
raw, _ := cmd.Flags().GetBool("raw")
2421

2522
if keyLength <= 0 {
2623
return errors.New("invalid key length")
@@ -33,26 +30,11 @@ var generateCmd = &cobra.Command{
3330

3431
encodedKey := base64.StdEncoding.EncodeToString(key)
3532

36-
if outputFile == "" {
37-
if raw {
38-
fmt.Fprintln(cmd.OutOrStdout(), encodedKey)
39-
} else {
40-
fmt.Fprintf(cmd.OutOrStdout(), "%s\n", styles.Header().Render("Master Key"))
41-
fmt.Fprintf(cmd.OutOrStdout(), " %s\n", styles.Code().Render(encodedKey))
42-
fmt.Fprintf(cmd.OutOrStdout(), "%s\n", styles.Muted().Render("💡 Store this key securely - you'll need it to encrypt/decrypt secrets"))
43-
}
44-
return nil
45-
}
46-
47-
if err := io.WriteSecureFile(outputFile, []byte(encodedKey+"\n"), modeStr, force); err != nil {
48-
return err
49-
}
50-
51-
if !raw {
52-
fmt.Fprintln(cmd.OutOrStdout(), styles.Success().Render(fmt.Sprintf("✓ Master key written to %s", outputFile)))
53-
}
54-
55-
return nil
33+
return handleCustomOutput(cmd, cfg, encodedKey, fmt.Sprintf("✓ Master key written to %s", cfg.file), func(out io.Writer) {
34+
fmt.Fprintf(out, "%s\n", styles.Header().Render("Master Key"))
35+
fmt.Fprintf(out, " %s\n", styles.Code().Render(encodedKey))
36+
fmt.Fprintf(out, "%s\n", styles.Muted().Render("💡 Store this key securely - you'll need it to encrypt/decrypt secrets"))
37+
})
5638
},
5739
}
5840

‎cmd/secrets/helpers.go‎

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package secrets
2+
3+
import (
4+
"fmt"
5+
"io"
6+
7+
internalIO "github.com/kloudkit/ws-cli/internals/io"
8+
"github.com/kloudkit/ws-cli/internals/styles"
9+
"github.com/spf13/cobra"
10+
)
11+
12+
type outputConfig struct {
13+
file string
14+
mode string
15+
force bool
16+
raw bool
17+
}
18+
19+
func getOutputConfig(cmd *cobra.Command) outputConfig {
20+
outputFile, _ := cmd.Flags().GetString("output")
21+
modeStr, _ := cmd.Flags().GetString("mode")
22+
force, _ := cmd.Flags().GetBool("force")
23+
raw, _ := cmd.Flags().GetBool("raw")
24+
25+
return outputConfig{
26+
file: outputFile,
27+
mode: modeStr,
28+
force: force,
29+
raw: raw,
30+
}
31+
}
32+
33+
func handleOutput(cmd *cobra.Command, cfg outputConfig, value string, title string, successMsg string, addNewline bool) error {
34+
if cfg.file == "" {
35+
return writeToStdout(cmd.OutOrStdout(), cfg.raw, value, title, addNewline)
36+
}
37+
return writeToFile(cmd.OutOrStdout(), cfg, value, successMsg)
38+
}
39+
40+
func handleCustomOutput(cmd *cobra.Command, cfg outputConfig, value string, successMsg string, styledOutput func(io.Writer)) error {
41+
if cfg.file == "" {
42+
if cfg.raw {
43+
fmt.Fprintln(cmd.OutOrStdout(), value)
44+
return nil
45+
}
46+
styledOutput(cmd.OutOrStdout())
47+
return nil
48+
}
49+
return writeToFile(cmd.OutOrStdout(), cfg, value, successMsg)
50+
}
51+
52+
func writeToStdout(out io.Writer, raw bool, value string, title string, addNewline bool) error {
53+
if raw {
54+
if addNewline {
55+
fmt.Fprintln(out, value)
56+
} else {
57+
fmt.Fprint(out, value)
58+
}
59+
return nil
60+
}
61+
styles.PrintTitle(out, title)
62+
styles.PrintKeyCode(out, "Value", value)
63+
return nil
64+
}
65+
66+
func writeToFile(out io.Writer, cfg outputConfig, value string, successMsg string) error {
67+
if err := internalIO.WriteSecureFile(cfg.file, []byte(value+"\n"), cfg.mode, cfg.force); err != nil {
68+
return err
69+
}
70+
if !cfg.raw {
71+
styles.PrintSuccessWithDetailsCode(out, successMsg, [][]string{
72+
{"Output", cfg.file},
73+
})
74+
}
75+
return nil
76+
}

‎cmd/secrets/vault.go‎

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -52,29 +52,15 @@ var vaultCmd = &cobra.Command{
5252
}
5353

5454
if stdout {
55-
for key, value := range results {
56-
output := internalSecrets.FormatSecretForStdout(key, value, raw)
57-
fmt.Fprint(cmd.OutOrStdout(), output)
58-
}
55+
printStdoutResults(cmd, results, raw)
5956
return nil
6057
}
6158

62-
if !raw {
63-
fmt.Fprintln(cmd.OutOrStdout(), styles.Success().Render("✓ Vault processed successfully"))
64-
for key, dest := range results {
65-
if after, ok := strings.CutPrefix(dest, "env:"); ok {
66-
envVar := after
67-
fmt.Fprintf(cmd.OutOrStdout(), " %s → %s\n",
68-
styles.Code().Render(key),
69-
styles.Muted().Render(fmt.Sprintf("env:%s", envVar)))
70-
} else {
71-
fmt.Fprintf(cmd.OutOrStdout(), " %s → %s\n",
72-
styles.Code().Render(key),
73-
styles.Muted().Render(dest))
74-
}
75-
}
59+
if raw {
60+
return nil
7661
}
7762

63+
printVaultSuccess(cmd, results)
7864
return nil
7965
},
8066
}
@@ -84,3 +70,23 @@ func init() {
8470
vaultCmd.Flags().StringArray("key", []string{}, "Decrypt only specified key")
8571
vaultCmd.Flags().Bool("stdout", false, "Output decrypted values to stdout")
8672
}
73+
74+
func printStdoutResults(cmd *cobra.Command, results map[string]string, raw bool) {
75+
for key, value := range results {
76+
output := internalSecrets.FormatSecretForStdout(key, value, raw)
77+
fmt.Fprint(cmd.OutOrStdout(), output)
78+
}
79+
}
80+
81+
func printVaultSuccess(cmd *cobra.Command, results map[string]string) {
82+
fmt.Fprintln(cmd.OutOrStdout(), styles.Success().Render("✓ Vault processed successfully"))
83+
for key, dest := range results {
84+
displayDest := dest
85+
if after, ok := strings.CutPrefix(dest, "env:"); ok {
86+
displayDest = fmt.Sprintf("env:%s", after)
87+
}
88+
fmt.Fprintf(cmd.OutOrStdout(), " %s → %s\n",
89+
styles.Code().Render(key),
90+
styles.Muted().Render(displayDest))
91+
}
92+
}

0 commit comments

Comments
 (0)