-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathkeys.go
More file actions
90 lines (80 loc) · 2.35 KB
/
keys.go
File metadata and controls
90 lines (80 loc) · 2.35 KB
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
package parser
import (
"github.com/drycc/workflow-cli/internal/commands"
"github.com/drycc/workflow-cli/internal/completion"
"github.com/drycc/workflow-cli/internal/template"
"github.com/drycc/workflow-cli/pkg/i18n"
"github.com/spf13/cobra"
)
func NewKeysCommand(cmdr *commands.DryccCmd) *cobra.Command {
cmd := &cobra.Command{
Use: "keys",
Short: i18n.T("Manage ssh keys used for 'git push' deployments"),
RunE: func(_ *cobra.Command, _ []string) error {
results, _ := commands.ResponseLimit(limit)
return cmdr.KeysList(results)
},
}
cmd.AddCommand(keysListCommand(cmdr))
cmd.AddCommand(keyAddCommand(cmdr))
cmd.AddCommand(keyRemoveCommand(cmdr))
return cmd
}
func keysListCommand(cmdr *commands.DryccCmd) *cobra.Command {
cmd := &cobra.Command{
Use: "list",
Short: i18n.T("List SSH keys for the logged in user"),
RunE: func(_ *cobra.Command, _ []string) error {
results, _ := commands.ResponseLimit(limit)
return cmdr.KeysList(results)
},
}
return cmd
}
func keyAddCommand(cmdr *commands.DryccCmd) *cobra.Command {
var flags struct {
name string
key string
}
cmd := &cobra.Command{
Use: "add [<name>] [<key>]",
Example: template.CustomExample(
"drycc keys add mykey /path/to/public.key",
map[string]string{
"<name>": i18n.T("Name of the SSH key"),
"<key>": i18n.T("A local file path to an SSH public key used to push application code"),
},
),
Args: cobra.MaximumNArgs(2),
Short: i18n.T("Add an SSH key"),
Long: i18n.T("Adds SSH keys for the logged in user"),
RunE: func(_ *cobra.Command, args []string) error {
if len(args) == 1 {
flags.key = args[0]
} else if len(args) == 2 {
flags.name = args[0]
flags.key = args[1]
}
return cmdr.KeyAdd(flags.name, flags.key)
},
}
return cmd
}
func keyRemoveCommand(cmdr *commands.DryccCmd) *cobra.Command {
var flags struct {
key string
}
keyCompletion := completion.KeyCompletion{ArgsLen: 0, ConfigFile: &cmdr.ConfigFile}
cmd := &cobra.Command{
Use: "remove <key>",
Args: cobra.ExactArgs(1),
Short: i18n.T("Remove an SSH key"),
Long: i18n.T("Removes an SSH key for the logged in user"),
ValidArgsFunction: keyCompletion.CompletionFunc,
RunE: func(_ *cobra.Command, args []string) error {
flags.key = args[0]
return cmdr.KeyRemove(flags.key)
},
}
return cmd
}