func executeTools()

in main.go [183:281]


func executeTools(args []string, opsHome string) int {
	trace("TOOL:", args)
	cmd := args[0]
	switch cmd {
	case "", "task":
		args = args[1:]
		exitCode, err := Task(args...)
		if err != nil {
			log.Println(err)
		}
		return exitCode

	case "i", "info":
		info()
		return 0

	case "u", "update":
		// ok no up, nor down, let's download it
		dir, err := pullTasks(true, true)
		if err != nil {
			log.Fatalf("error: %v", err)
		}
		if err := setOpsOlarisHash(dir); err != nil {
			log.Fatal("unable to set OPS_OLARIS...", err.Error())
		}
		return 0

	case "l", "login":
		args[0] = "-login"
		os.Args = args
		loginResult, err := auth.LoginCmd()
		if err != nil {
			log.Fatalf("error: %s", err.Error())
		}

		if loginResult == nil {
			return 1
		}

		fmt.Println("Successfully logged in as " + loginResult.Login + ".")
		if err := wskPropertySet(loginResult.ApiHost, loginResult.Auth); err != nil {
			log.Fatalf("error: %s", err.Error())
		}
		fmt.Println("OpenServerless host and auth set successfully. You are now ready to use ops!")
		return 0

	case "c", "config":
		args[0] = "-config"
		os.Args = args
		opsRootPath := joinpath(getRootDirOrExit(), OPSROOT)
		configPath := joinpath(opsHome, CONFIGFILE)
		configMap, err := buildConfigMap(opsRootPath, configPath)
		if err != nil {
			log.Fatalf("error: %s", err.Error())
		}

		if err := config.ConfigTool(*configMap); err != nil {
			log.Fatalf("error: %s", err.Error())
		}
		return 0

	case "retry":
		args[0] = "-retry"
		if err := tools.ExpBackoffRetry(args); err != nil {
			log.Fatalf("error: %s", err.Error())
		}
		return 0

	case "plugin":
		args[0] = "-plugin"
		os.Args = args
		if err := pluginTool(); err != nil {
			log.Fatalf("error: %s", err.Error())
		}
		return 0

	case "serve":
		args[0] = "-serve"
		opsRootDir := getRootDirOrExit()
		if err := Serve(opsRootDir, args); err != nil {
			log.Fatalf("error: %v", err)
		}
		return 0

	default:
		// check if it is an embedded to and invoke it
		if tools.IsTool(cmd) {
			code, err := tools.RunTool(cmd, args[1:])
			if err != nil {
				log.Print(err.Error())
			}
			return code
		}
		// no embeded tool found
		warn("unknown tool", "-"+cmd)
		return 1
	}
	//return 0 // unreachable - or it should be!
}