github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/cmd/jujud/main_windows.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Copyright 2014 Cloudbase Solutions 3 // Licensed under the AGPLv3, see LICENCE file for details. 4 5 package main 6 7 import ( 8 "os" 9 "path/filepath" 10 "syscall" 11 12 "github.com/juju/juju/juju/names" 13 14 "bitbucket.org/kardianos/service" 15 ) 16 17 func runService() { 18 var name = "juju" 19 var displayName = "juju service" 20 var desc = "juju service" 21 22 var s, err = service.NewService(name, displayName, desc) 23 if err != nil { 24 logger.Errorf("%s", err) 25 os.Exit(1) 26 } 27 28 run := func() error { 29 go Main(os.Args) 30 return nil 31 } 32 stop := func() error { 33 os.Exit(0) 34 return nil 35 } 36 err = s.Run(run, stop) 37 38 if err != nil { 39 s.Error(err.Error()) 40 } 41 } 42 43 func runConsole() { 44 Main(os.Args) 45 } 46 47 func main() { 48 var mode uint32 49 err := syscall.GetConsoleMode(syscall.Stdin, &mode) 50 51 isConsole := err == nil 52 53 commandName := filepath.Base(os.Args[0]) 54 55 if isConsole == true || commandName != names.Jujud { 56 runConsole() 57 } else { 58 runService() 59 } 60 }