func main()

in update/main.go [68:160]


func main() {
	options := parseOptions()

	if options.GetHelp {
		pflag.Usage()
		return
	}
	if options.GetVersion {
		fmt.Println(version.AssistVersion)
		return
	}
	if options.GetGitHash {
		fmt.Println(version.GitCommitHash)
		return
	}

	log.InitLog("aliyun_assist_update.log", "", false)
	log.GetLogger().Infof("Starting...... version: %s githash: %s", version.AssistVersion, version.GitCommitHash)
	SingleAppLock = single.New("AliyunAssistUpdateSingleLock")
	if err := SingleAppLock.CheckLock(); err != nil && err == single.ErrAlreadyRunning {
		fmt.Fprintln(os.Stderr, "Error: another instance of the app is already running")
		os.Exit(1)
		return
	}
	defer SingleAppLock.TryUnlock()

	// Init config
	flagging.InitConfig(log.GetLogger())
	envutil.ClearExecErrDot()
	if options.CheckUpdate {
		// Exclusive options check
		if options.ForceUpdate || options.LocalInstall != "" {
			fmt.Fprintln(os.Stderr, "Invalid options: specified options in conflict")
			pflag.Usage()
			os.Exit(1)
			return
		}

		if err := doCheckUpdate(); err != nil {
			log.GetLogger().WithError(err).Errorln("Failed to check or update agent")
			fmt.Fprintln(os.Stderr, "Error:", err.Error())
			os.Exit(1)
		}
		return
	} else if options.ForceUpdate {
		// Exclusive options check
		if options.CheckUpdate || options.LocalInstall != "" {
			fmt.Fprintln(os.Stderr, "Invalid options: specified options in conflict")
			pflag.Usage()
			os.Exit(1)
			return
		}

		if options.ForceUpdateURL == "" {
			fmt.Fprintln(os.Stderr, "Invalid options: -f/--force_update option needs specifying update package URL via --url option")
			pflag.Usage()
			os.Exit(1)
			return
		}
		if options.ForceUpdateMD5 == "" {
			fmt.Fprintln(os.Stderr, "Invalid options: -f/--force_update option needs specifying MD5 checksum of update package via --md5 option")
			pflag.Usage()
			os.Exit(1)
			return
		}

		log.GetLogger().Infof("Force update: url=%s, md5=%s", options.ForceUpdateURL, options.ForceUpdateMD5)
		if err := doUpdate(options.ForceUpdateURL, options.ForceUpdateMD5, ""); err != nil {
			log.GetLogger().WithError(err).Errorln("Failed to perform force updating")
			fmt.Fprintln(os.Stderr, "Error:", err.Error())
			os.Exit(1)
		}
		return
	} else if options.LocalInstall != "" {
		// Exclusive options check
		if options.CheckUpdate || options.ForceUpdate {
			fmt.Fprintln(os.Stderr, "Invalid options: specified options in conflict")
			pflag.Usage()
			os.Exit(1)
			return
		}

		if err := doInstall(options.LocalInstall); err != nil {
			log.GetLogger().WithError(err).Errorln("Failed to execute update script")
			fmt.Fprintln(os.Stderr, "Error:", err.Error())
			os.Exit(1)
			return
		}
	} else {
		pflag.Usage()
		return
	}
}