diff --git a/cmd/power/shutdown.go b/cmd/power/shutdown.go new file mode 100644 index 00000000..d7f5a581 --- /dev/null +++ b/cmd/power/shutdown.go @@ -0,0 +1,49 @@ +package power + +import( + "fmt" + "os" + + "github.com/codegangsta/cli" + "github.com/rancherio/os/config" +) + +func Main() { + app := cli.NewApp() + + app.Name = os.Args[0] + app.Usage = "Control and configure RancherOS" + app.Version = config.VERSION + app.Author = "Rancher Labs, Inc." + app.Email = "sid@rancher.com" + app.EnableBashCompletion = true + app.Action = shutdown + app.Flags = []cli.Flag{ + cli.StringFlag { + Name: "r, R", + Usage: "reboot after shutdown", + }, + cli.StringFlag { + Name: "h", + Usage: "halt the system", + }, + } + app.HideHelp = true + app.Run(os.Args) +} + + +func shutdown(c *cli.Context) { + reboot := c.String("r") + poweroff := c.String("h") + + fmt.Println(reboot) + fmt.Println(poweroff) + + if reboot == "now" { + Reboot() + } else if poweroff == "now" { + PowerOff() + } +} + diff --git a/config/default.go b/config/default.go index 9b5061b4..5c9f9384 100644 --- a/config/default.go +++ b/config/default.go @@ -37,6 +37,7 @@ func NewConfig() *Config { "-v=/init:/sbin/halt:ro " + "-v=/init:/sbin/poweroff:ro " + "-v=/init:/sbin/reboot:ro " + + "-v=/init:/sbin/shutdown:ro " + "-v=/init:/usr/bin/cloud-init:ro " + "-v=/init:/usr/bin/tlsconf:ro " + "-v=/init:/usr/bin/rancherctl:ro " + diff --git a/main.go b/main.go index db882353..39e73a93 100644 --- a/main.go +++ b/main.go @@ -40,6 +40,7 @@ func main() { registerCmd("/sbin/poweroff", power.PowerOff) registerCmd("/sbin/reboot", power.Reboot) registerCmd("/sbin/halt", power.Halt) + registerCmd("/sbin/shutdown", power.Main) registerCmd("/usr/bin/respawn", respawn.Main) registerCmd("/usr/sbin/rancherctl", control.Main) registerCmd("/usr/bin/cloud-init", cloudinit.Main)