/
cmd.go
62 lines (56 loc) · 1.45 KB
/
cmd.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
package etcdbackup
import (
"github.com/spf13/cobra"
"github.com/openshift/openshift-azure/pkg/entrypoint/config"
)
type cmdConfig struct {
config.Common
blobName string
destination string
maxBackups int
action string
}
// NewCommand returns the cobra command for "etcdbackup".
func NewCommand() *cobra.Command {
cc := &cobra.Command{
Use: "etcdbackup",
Long: "Start Etcd backup and Restore application",
RunE: func(cmd *cobra.Command, args []string) error {
cfg, err := configFromCmd(cmd)
if err != nil {
return err
}
return start(cfg)
},
}
cc.Flags().String("blobName", "", "Name of the blob (without the container)")
cc.Flags().String("destination", "", "Where to place the blob on the filesystem")
cc.Flags().Int("maxBackups", 6, "Maximum number of backups to keep")
cc.Flags().StringP("action", "a", "save", "Action to be executed [save, download]")
return cc
}
func configFromCmd(cmd *cobra.Command) (*cmdConfig, error) {
c := &cmdConfig{}
var err error
c.Common, err = config.CommonConfigFromCmd(cmd)
if err != nil {
return nil, err
}
c.action, err = cmd.Flags().GetString("action")
if err != nil {
return nil, err
}
c.blobName, err = cmd.Flags().GetString("blobName")
if err != nil {
return nil, err
}
c.maxBackups, err = cmd.Flags().GetInt("maxBackups")
if err != nil {
return nil, err
}
c.destination, err = cmd.Flags().GetString("destination")
if err != nil {
return nil, err
}
return c, nil
}