mirror of
https://github.com/FlipsideCrypto/convox.git
synced 2026-02-06 10:56:56 +00:00
50 lines
805 B
Go
50 lines
805 B
Go
package cli
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/convox/convox/sdk"
|
|
"github.com/convox/stdcli"
|
|
)
|
|
|
|
func init() {
|
|
registerWithoutProvider("switch", "switch current rack", Switch, stdcli.CommandOptions{
|
|
Validate: stdcli.ArgsMax(1),
|
|
})
|
|
}
|
|
|
|
func Switch(rack sdk.Interface, c *stdcli.Context) error {
|
|
host, err := currentHost(c)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if rack := c.Arg(0); rack != "" {
|
|
r, err := matchRack(c, rack)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
rs := hostRacks(c)
|
|
|
|
rs[host] = r.Name
|
|
|
|
data, err := json.MarshalIndent(rs, "", " ")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := c.SettingWrite("racks", string(data)); err != nil {
|
|
return err
|
|
}
|
|
|
|
c.Writef("Switched to <rack>%s</rack>\n", r.Name)
|
|
|
|
return nil
|
|
}
|
|
|
|
c.Writef("%s\n", currentRack(c, host))
|
|
|
|
return nil
|
|
}
|