/
remove.go
80 lines (66 loc) · 1.48 KB
/
remove.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
package commands
import (
"fmt"
"log"
"github.com/codegangsta/cli"
"github.com/lingo-reviews/lingo/util"
)
var RemoveCMD = cli.Command{
Name: "remove",
Aliases: []string{"rm"},
Usage: "remove a tenet from lingo",
Description: `
"lingo remove github.com/lingo-reviews/unused-args"
`[1:],
Flags: []cli.Flag{
cli.StringFlag{
Name: "group",
Value: "default",
Usage: "group to remove tenet from"},
},
Action: remove,
BashComplete: func(c *cli.Context) {
// This will complete if no args are passed
if len(c.Args()) > 0 {
return
}
// TODO(waigani) read from .lingo not bin tenets
tenets, err := util.BinTenets()
if err != nil {
log.Printf("auto complete error %v", err)
return
}
for _, t := range tenets {
fmt.Println(t)
}
},
}
func remove(c *cli.Context) {
if l := len(c.Args()); l != 1 {
oserrf("error: expected 1 argument, got %d", l)
return
}
cfgPath, err := tenetCfgPath(c)
if err != nil {
oserrf("reading config file: %s", err.Error())
return
}
cfg, err := buildConfig(cfgPath, CascadeNone)
if err != nil {
oserrf("reading config file: %s", err.Error())
return
}
imageName := c.Args().First()
if !cfg.HasTenet(imageName) {
oserrf(`error: tenet "%s" not found in %q`, imageName, c.GlobalString(tenetCfgFlg.long))
return
}
if err := cfg.RemoveTenet(imageName, c.String("group")); err != nil {
oserrf(err.Error())
return
}
if err := writeConfigFile(c, cfg); err != nil {
oserrf(err.Error())
return
}
}