/
set.go
42 lines (34 loc) · 1005 Bytes
/
set.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
package stacks
import (
"github.com/Scalingo/cli/config"
"github.com/Scalingo/cli/io"
"github.com/Scalingo/go-scalingo"
"gopkg.in/errgo.v1"
)
func Set(app string, stack string) error {
c, err := config.ScalingoClient()
if err != nil {
return errgo.Notef(err, "fail to get Scalingo client")
}
stacks, err := c.StacksList()
if err != nil {
return errgo.Notef(err, "fail to list available stacks")
}
var stackToSet scalingo.Stack
for _, apistack := range stacks {
if apistack.Name == stack || apistack.ID == stack {
stackToSet = apistack
break
}
}
if stackToSet.ID == "" {
return errgo.Newf("stack '%v' is unknown.", stack)
}
_, err = c.AppsSetStack(app, stackToSet.ID)
if err != nil {
return errgo.Notef(err, "fail to set stack %v (%v)", stackToSet.Name, stackToSet.ID)
}
io.Statusf("Stack of %v has been set to %v (%v)\n", io.Bold(app), io.Bold(stackToSet.Name), stackToSet.ID)
io.Infof(io.Gray("Deployment cache of %v has been reseted\n"), app)
return nil
}