in rootcmd.go [535:650]
func runRootCommand(ctx *cli.Context, args []string) error {
options := parseOptions(ctx)
log.InitLog("aliyun_assist_main.log", options.LogPath, false)
// Redirect logging messages from kubernetes CRI client via klog to logrus
// used by ourselves
klog.SetLogger(logrusr.New(log.GetLogger()).WithName("klog"))
if options.LogPath != "" {
pathutil.SetScriptPath(options.LogPath)
}
e := PatchGolang()
if e != nil {
log.GetLogger().Fatal("PatchGolang failed :", e.Error())
}
if options.IsVerbose {
util.SetVerboseMode(true)
}
if options.GetHelp {
// aliyun-cli/cli library handles "help" flag internally, and here needs
// to do nothing.
return nil
}
if options.GetVersion {
fmt.Println(version.AssistVersion)
return nil
}
if options.GetGitHash {
fmt.Println(version.GitCommitHash)
return nil
}
if options.Register {
tags := []hybrid.Tag{}
for _, tag := range options.Tags {
words := strings.Split(tag, "=")
if len(words) != 2 {
fmt.Println("Invalid tag: ", tag)
cli.Exit(1)
}
tags = append(tags, hybrid.Tag{
Key: words[0],
Value: words[1],
})
}
if !hybrid.Register(options.Region, options.ActivationCode, options.ActivationId, options.InstanceName, options.NetWorkMode, true, tags) {
cli.Exit(1)
}
return nil
}
if options.DeRegister {
if !hybrid.UnRegister(true) {
cli.Exit(1)
}
return nil
}
if options.RunAsDaemon {
// TODO: Check other options like --install, --remove, --start, --stop should not be passed
if err := daemon.Daemonize(); err != nil {
fmt.Fprintln(os.Stderr, "Failed to start aliyun-service as daemon:", err)
cli.Exit(1)
}
return nil
}
svcConfig := install.ServiceConfig()
prg := &program{}
s, err := service.New(prg, svcConfig)
if err != nil {
return fmt.Errorf("new service error %w", err)
}
if options.Stop {
if err := s.Stop(); err != nil {
return fmt.Errorf("stop assist failed: %w", err)
} else {
fmt.Println("stop assist ok")
return nil
}
}
if options.Remove {
if err := s.Uninstall(); err != nil {
return fmt.Errorf("uninstall assist failed: %w", err)
} else {
fmt.Println("uninstall assist ok")
return nil
}
}
if options.Install {
if err := s.Install(); err != nil {
return fmt.Errorf("install assist failed: %w", err)
} else {
fmt.Println("install assist ok")
return nil
}
}
if options.Start {
if err := s.Start(); err != nil {
return fmt.Errorf("start assist failed: %w", err)
} else {
fmt.Println("start assist ok")
return nil
}
}
err = s.Run()
if err != nil {
log.GetLogger().Println(err.Error())
return err
}
return nil
}