func (c *CLI) initOtherCmds() { c.versionCmd = &cobra.Command{ Use: "version", Short: "Print the version", Run: func(cmd *cobra.Command, args []string) { util.PrintVersion(os.Stdout) }, } c.c.AddCommand(c.versionCmd) c.installCmd = &cobra.Command{ Use: "install", Short: "Install REX-Ray", Run: func(cmd *cobra.Command, args []string) { install() }, } c.c.AddCommand(c.installCmd) c.uninstallCmd = &cobra.Command{ Use: "uninstall", Short: "Uninstall REX-Ray", Run: func(cmd *cobra.Command, args []string) { pkgManager, _ := cmd.Flags().GetBool("package") uninstall(pkgManager) }, } c.c.AddCommand(c.uninstallCmd) }
func (c *CLI) initOtherCmds() { c.versionCmd = &cobra.Command{ Use: "version", Short: "Print the version", Run: func(cmd *cobra.Command, args []string) { util.PrintVersion(os.Stdout) }, } c.c.AddCommand(c.versionCmd) c.envCmd = &cobra.Command{ Use: "env", Short: "Print the REX-Ray environment", Run: func(cmd *cobra.Command, args []string) { evs := c.r.Config.EnvVars() for _, ev := range evs { fmt.Println(ev) } }, } c.c.AddCommand(c.envCmd) c.installCmd = &cobra.Command{ Use: "install", Short: "Install REX-Ray", Run: func(cmd *cobra.Command, args []string) { install() }, } c.c.AddCommand(c.installCmd) c.uninstallCmd = &cobra.Command{ Use: "uninstall", Short: "Uninstall REX-Ray", Run: func(cmd *cobra.Command, args []string) { pkgManager, _ := cmd.Flags().GetBool("package") uninstall(pkgManager) }, } c.c.AddCommand(c.uninstallCmd) }
func startDaemon() { var out io.Writer = os.Stdout if !log.IsTerminal() { logFile, logFileErr := util.LogFile("rexray.log") failOnError(logFileErr) out = io.MultiWriter(os.Stdout, logFile) } log.SetOutput(out) fmt.Fprintf(out, "%s\n", rexRayLogoASCII) util.PrintVersion(out) fmt.Fprintln(out) var success []byte var failure []byte var conn net.Conn if !fg { success = []byte{0} failure = []byte{1} var dialErr error log.Printf("dialing %s", client) conn, dialErr = net.Dial("unix", client) if dialErr != nil { panic(dialErr) } } writePidErr := util.WritePidFile(-1) if writePidErr != nil { if conn != nil { conn.Write(failure) } panic(writePidErr) } defer func() { r := recover() os.Remove(util.PidFilePath()) if r != nil { panic(r) } }() log.Printf("created pid file, pid=%d", os.Getpid()) init := make(chan error) sigc := make(chan os.Signal, 1) stop := make(chan os.Signal) signal.Notify(sigc, syscall.SIGKILL, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) go func() { rrdaemon.Start(r.Config.Host, init, stop) }() var initErrors []error for initErr := range init { initErrors = append(initErrors, initErr) log.Println(initErr) } if conn != nil { if len(initErrors) == 0 { conn.Write(success) } else { conn.Write(failure) } conn.Close() } if len(initErrors) > 0 { return } sigv := <-sigc log.Printf("received shutdown signal %v", sigv) stop <- sigv }
}, } var moduleCmd = &cobra.Command{ Use: "module", Short: "The module manager", Run: func(cmd *cobra.Command, args []string) { cmd.Usage() }, } var versionCmd = &cobra.Command{ Use: "version", Short: "Print the version", Run: func(cmd *cobra.Command, args []string) { util.PrintVersion(os.Stdout) }, } var volumeCmd = &cobra.Command{ Use: "volume", Short: "The volume manager", Run: func(cmd *cobra.Command, args []string) { if isHelpFlags(cmd) { cmd.Usage() } else { volumeGetCmd.Run(volumeGetCmd, args) } }, }