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  }