/
main.go
60 lines (52 loc) · 1.01 KB
/
main.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
package main
import (
"flag"
"fmt"
"os"
"github.com/Masterminds/semver"
)
var version = semver.MustParse("v1.3.5")
func main() {
flag.Parse()
if err := ensureTooldir(); err != nil {
fatal("failed to locate or create tool directory", err)
}
cmd, tool := parseArgs()
if cmd == "version" {
fmt.Fprintf(os.Stdout, "retool %s", version)
os.Exit(0)
}
if !specExists() {
if cmd == "add" {
err := writeBlankSpec()
if err != nil {
fatal("failed to write blank spec", err)
}
} else {
fatal("tools.json does not yet exist. You need to add a tool first with 'retool add'", nil)
}
}
s, err := read()
if err != nil {
fatal("failed to load tools.json", err)
}
switch cmd {
case "add":
s.add(tool)
case "upgrade":
s.upgrade(tool)
case "remove":
s.remove(tool)
case "build":
s.build()
case "sync":
s.sync()
case "do":
s.sync()
do()
case "clean":
log("the clean subcommand is deprecated and has no effect")
default:
fatal(fmt.Sprintf("unknown cmd %q", cmd), nil)
}
}