/
addons.go
119 lines (112 loc) · 3.04 KB
/
addons.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package cmd
import (
"github.com/Scalingo/cli/addons"
"github.com/Scalingo/cli/appdetect"
"github.com/Scalingo/cli/cmd/autocomplete"
"github.com/urfave/cli"
)
var (
AddonsListCommand = cli.Command{
Name: "addons",
Category: "Addons",
Usage: "List used add-ons",
Flags: []cli.Flag{appFlag},
Description: ` List all addons used by your app:
$ scalingo -a myapp addons
# See also 'addons-add' and 'addons-remove'
`,
Action: func(c *cli.Context) {
currentApp := appdetect.CurrentApp(c)
var err error
if len(c.Args()) == 0 {
err = addons.List(currentApp)
} else {
cli.ShowCommandHelp(c, "addons")
}
if err != nil {
errorQuit(err)
}
},
BashComplete: func(c *cli.Context) {
autocomplete.CmdFlagsAutoComplete(c, "addons")
},
}
AddonsAddCommand = cli.Command{
Name: "addons-add",
Category: "Addons",
Flags: []cli.Flag{appFlag},
Usage: "Provision an add-on for your application",
Description: ` Provision an add-on for your application:
$ scalingo -a myapp addons-add <addon-name> <plan>
# See also 'addons-list' and 'addons-plans'
`,
Action: func(c *cli.Context) {
currentApp := appdetect.CurrentApp(c)
var err error
if len(c.Args()) == 2 {
err = addons.Provision(currentApp, c.Args()[0], c.Args()[1])
} else {
cli.ShowCommandHelp(c, "addons-add")
}
if err != nil {
errorQuit(err)
}
},
BashComplete: func(c *cli.Context) {
autocomplete.CmdFlagsAutoComplete(c, "addons-add")
autocomplete.AddonsAddAutoComplete(c)
},
}
AddonsRemoveCommand = cli.Command{
Name: "addons-remove",
Category: "Addons",
Flags: []cli.Flag{appFlag},
Usage: "Remove an existing addon from your app",
Description: ` Remove an existing addon from your app:
$ scalingo -a myapp addons-remove <addon-id>
# See also 'addons' and 'addons-add'
`,
Action: func(c *cli.Context) {
currentApp := appdetect.CurrentApp(c)
var err error
if len(c.Args()) == 1 {
err = addons.Destroy(currentApp, c.Args()[0])
} else {
cli.ShowCommandHelp(c, "addons-remove")
}
if err != nil {
errorQuit(err)
}
},
BashComplete: func(c *cli.Context) {
autocomplete.CmdFlagsAutoComplete(c, "addons-remove")
autocomplete.AddonsRemoveAutoComplete(c)
},
}
AddonsUpgradeCommand = cli.Command{
Name: "addons-upgrade",
Category: "Addons",
Flags: []cli.Flag{appFlag},
Usage: "Upgrade or downgrade an add-on attached to your app",
Description: ` Upgrade an addon attached to your app:
$ scalingo -a myapp addons-upgrade <addon-id> <plan>
# See also 'addons-plans' and 'addons-remove'
`,
Action: func(c *cli.Context) {
currentApp := appdetect.CurrentApp(c)
var err error
if len(c.Args()) == 2 {
err = addons.Upgrade(currentApp, c.Args()[0], c.Args()[1])
} else {
cli.ShowCommandHelp(c, "addons-upgrade")
}
if err != nil {
errorQuit(err)
}
},
BashComplete: func(c *cli.Context) {
autocomplete.CmdFlagsAutoComplete(c, "addons-upgrade")
autocomplete.AddonsUpgradeAutoComplete(c)
},
}
)