55package commands
66
77import (
8+ "fmt"
89 "os"
910 "time"
1011
@@ -22,9 +23,11 @@ var cmdRun = &types.Command{
2223 Help : "Run a command in a new server." ,
2324 Examples : `
2425 $ scw run ubuntu-trusty
26+ $ scw run ubuntu-trusty bash
2527 $ scw run --name=mydocker docker docker run moul/nyancat:armhf
2628 $ scw run --bootscript=3.2.34 --env="boot=live rescue_image=http://j.mp/scaleway-ubuntu-trusty-tarball" 50GB bash
27- $ scw run attach alpine
29+ $ scw run --attach alpine
30+ $ scw run --detach alpine
2831` ,
2932}
3033
@@ -35,6 +38,7 @@ func init() {
3538 cmdRun .Flag .StringVar (& runCreateVolume , []string {"v" , "-volume" }, "" , "Attach additional volume (i.e., 50G)" )
3639 cmdRun .Flag .BoolVar (& runHelpFlag , []string {"h" , "-help" }, false , "Print usage" )
3740 cmdRun .Flag .BoolVar (& runAttachFlag , []string {"a" , "-attach" }, false , "Attach to serial console" )
41+ cmdRun .Flag .BoolVar (& runDetachFlag , []string {"d" , "-detach" }, false , "Run server in background and print server ID" )
3842 // FIXME: handle start --timeout
3943}
4044
@@ -45,6 +49,7 @@ var runCreateEnv string // -e, --env flag
4549var runCreateVolume string // -v, --volume flag
4650var runHelpFlag bool // -h, --help flag
4751var runAttachFlag bool // -a, --attach flag
52+ var runDetachFlag bool // -d, --detach flag
4853
4954func runRun (cmd * types.Command , args []string ) {
5055 if runHelpFlag {
@@ -54,7 +59,13 @@ func runRun(cmd *types.Command, args []string) {
5459 cmd .PrintShortUsage ()
5560 }
5661 if runAttachFlag && len (args ) > 1 {
57- log .Fatalf ("Cannot use '--attach' and 'COMMAND [ARG...]' at the same time. See 'scw run --help'" )
62+ log .Fatalf ("Conflicting options: -a and COMMAND" )
63+ }
64+ if runAttachFlag && runDetachFlag {
65+ log .Fatalf ("Conflicting options: -a and -d" )
66+ }
67+ if runDetachFlag && len (args ) > 1 {
68+ log .Fatalf ("Conflicting options: -d and COMMAND" )
5869 }
5970
6071 // create IMAGE
@@ -73,6 +84,11 @@ func runRun(cmd *types.Command, args []string) {
7384 }
7485 log .Debugf ("Server is booting" )
7586
87+ if runDetachFlag {
88+ fmt .Println (serverID )
89+ return
90+ }
91+
7692 if runAttachFlag {
7793 // Attach to server serial
7894 log .Debugf ("Attaching to server console" )
0 commit comments