Example #1
0
func flagParse() {
	flDaemon := flag.Bool([]string{"D", "-daemon"}, false, "Enable daemon mode")
	flVersion := flag.Bool([]string{"V", "-version"}, false, "Show version")
	flToken := flag.String([]string{"-token"}, "", "user token")

	flag.Usage = cmd.ShowUsage
	//flag.PrintDefaults()
	flag.Parse()
	//fmt.Printf("run daemon: %v, version: %v\n", *flDaemon, *flVersion)

	if *flVersion {
		fmt.Println("datahub", ds.DATAHUB_VERSION)
		os.Exit(0)
	}

	if len(*flToken) == 40 {
		daemonigo.Token = *flToken
		daemon.DaemonID = *flToken
	}

	if *flDaemon {
		runDaemon = true

	}
}
Example #2
0
// This function wraps application with daemonization.
// Returns isDaemon value to distinguish parent and daemonized processes.
func Daemonize() (isDaemon bool, err error) {
	const errLoc = "daemonigo.Daemonize()"
	isDaemon = os.Getenv(EnvVarName) == EnvVarValue
	log.Println("IsDaemon: ", isDaemon)
	if WorkDir != "" {
		if err = os.Chdir(WorkDir); err != nil {
			err = fmt.Errorf(
				"%s: changing working directory failed, reason -> %s",
				errLoc, err.Error(),
			)
			return
		}
	}
	if isDaemon {
		oldmask := syscall.Umask(int(Umask))
		defer syscall.Umask(oldmask)
		if _, err = syscall.Setsid(); err != nil {
			err = fmt.Errorf(
				"%s: setsid failed, reason -> %s", errLoc, err.Error(),
			)
			return
		}
		if pidFile, err = lockPidFile(); err != nil {
			err = fmt.Errorf(
				"%s: locking PID file failed, reason -> %s",
				errLoc, err.Error(),
			)
		}
	} else {
		flag.Usage = func() {
			arr := make([]string, 0, len(actions))
			for k, _ := range actions {
				arr = append(arr, k)
			}
			fmt.Fprintf(os.Stderr, "Usage: %s {%s}\n",
				os.Args[0], strings.Join(arr, "|"),
			)
			flag.PrintDefaults()
		}

		if !flag.Parsed() {
			log.Printf(" flag.Parse\n")
			flag.Parse()
		}
		//fmt.Printf("after flag.Parse\n")
		//fmt.Printf("flag.Arg(0):%s\n", flag.Arg(0))

		//action, exist := actions[flag.Arg(0)]
		action, exist := actions["daemon"]
		//fmt.Println("exist:", exist)
		if exist {
			action()
		} else {
			flag.Usage()
		}

	}
	return
}
Example #3
0
func flagParse() {
	flDaemon := flag.Bool([]string{"D", "-daemon"}, false, "Enable daemon mode")
	flVersion := flag.Bool([]string{"V", "-version"}, false, "Show version")

	flag.Usage = client.ShowUsage
	//flag.PrintDefaults()
	flag.Parse()
	//fmt.Printf("run daemon: %v, version: %v\n", *flDaemon, *flVersion)

	if *flVersion {
		fmt.Println("datahub v0.1.0")
		os.Exit(0)
	}

	if *flDaemon {
		runDaemon = true
	}
}