forked from adriaandejonge/xld-cli
/
main.go
93 lines (74 loc) · 1.84 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
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 main
import (
"errors"
"fmt"
"github.com/adriaandejonge/xld/deploy"
"github.com/adriaandejonge/xld/metadata"
"github.com/adriaandejonge/xld/repo"
//"github.com/adriaandejonge/xld/security"
"os"
"github.com/adriaandejonge/xld/util/cmd"
"github.com/adriaandejonge/xld/util/login"
)
var commands cmd.OptionList = cmd.OptionList{
login.LoginCmd,
//login.LoutoutCmd
deploy.DeployCmd,
deploy.UndeployCmd,
deploy.InitialCmd,
deploy.UpdateCmd,
deploy.PlanInitialCmd,
deploy.PlanUpdateCmd,
repo.CreateCmd,
repo.ReadCmd,
repo.ModifyCmd,
repo.RemoveCmd,
repo.ListCmd,
metadata.DescribeCmd,
metadata.TypesCmd,
//security.PermissionsCmd,
//security.GrantCmd,
//security.RevokeCmd,
}
func main() {
args, err := cmd.ReadArgs(os.Args[1:])
if err != nil {
fmt.Println("ERROR", err)
os.Exit(1)
}
var result string
finder := commands.Finder()
command, ok := finder(args.Main())
if ok {
if len(args.Subs()) >= command.MinArgs {
result, err = command.Do(args)
} else {
errorText := fmt.Sprintf(
"Command %s expects at least %d arguments",
command.Name, command.MinArgs)
err = errors.New(errorText)
}
} else {
// TODO check update vs upgrade = similar
// TODO Make list depend on permissions
// TODO if not logged in or env var; show how
fmt.Println("XL Deploy Command Line Alternative - EXPERIMENTAL v0.1")
fmt.Println("Created by Adriaan de Jonge - August, 2014")
fmt.Println("\nUsage: xld <command> <params...>\n\nCommands\n")
for _, el := range commands.List() {
name := el.Name + " "
name = name[:12]
if !el.Hidden {
fmt.Println(name, "-", el.Description)
}
}
fmt.Println("\nFor additional help on parameters, type: xld help <command>")
}
if err != nil {
fmt.Println("ERROR", err)
os.Exit(1)
} else if result != "" {
fmt.Println(result)
os.Exit(0)
}
}