-
Notifications
You must be signed in to change notification settings - Fork 5
/
secrets.go
93 lines (77 loc) · 2.58 KB
/
secrets.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package cmd
import (
"errors"
"fmt"
"github.com/spf13/cobra"
"github.com/teamkeel/keel/cmd/program"
)
// secretsCmd represents the secrets command
var secretsCmd = &cobra.Command{
Use: "secrets",
Short: "Interact with your Keel App's secrets",
Long: `The secrets command allows you to interact with your
Keel App's secrets locally. This will allow you to add, remove,
and list secrets that are stored in your cli config usually
found at ~/.keel/config.yaml.`,
Run: func(cmd *cobra.Command, args []string) {
// list subcommands
_ = cmd.Help()
},
}
func init() {
rootCmd.AddCommand(secretsCmd)
secretsCmd.AddCommand(secretsListCmd)
secretsCmd.AddCommand(secretsSetCmd)
secretsCmd.AddCommand(secretsRemoveCmd)
secretsCmd.PersistentFlags().StringVarP(&flagEnvironment, "env", "e", "development", "environment")
}
var secretsListCmd = &cobra.Command{
Use: "list",
Short: "List all secrets for your Keel App",
Long: `The list command will list all secrets that are
stored in your cli config usually found at ~/.keel/config.yaml.`,
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
secrets, err := program.LoadSecrets(flagProjectDir, flagEnvironment)
if err != nil {
return program.RenderError(err)
}
if len(secrets) == 0 {
return program.RenderError(errors.New("No secrets found"))
}
program.RenderSuccess(fmt.Sprintf("Listing secrets for environment: %s", flagEnvironment))
fmt.Println(program.RenderSecrets(secrets))
return nil
},
}
var secretsSetCmd = &cobra.Command{
Use: "set <key> <value>",
Short: "Set a secret for your Keel App",
Long: "The set command will set a secret for your Keel App. The default environment is development.",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
key := args[0]
value := args[1]
err := program.SetSecret(flagProjectDir, flagEnvironment, key, value)
if err != nil {
return program.RenderError(err)
}
program.RenderSuccess(fmt.Sprintf("Secret %s set for environment %s", key, flagEnvironment))
return nil
},
}
var secretsRemoveCmd = &cobra.Command{
Use: "remove <key>",
Short: "Remove a secret for your Keel App",
Long: "The remove command will remove a secret for your Keel App. The default environment is development.",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
key := args[0]
err := program.RemoveSecret(flagProjectDir, flagEnvironment, key)
if err != nil {
return program.RenderError(err)
}
program.RenderSuccess(fmt.Sprintf("Secrets updated for environment %s", flagEnvironment))
return nil
},
}