func pullTasks()

in prepare.go [111:161]


func pullTasks(force, silent bool) (string, error) {
	// download from github
	localDir, err := downloadTasksFromGitHub(force, silent)
	debug("localDir", localDir)
	if err != nil {
		return "", fmt.Errorf("cannot update tasks because: %s\nremove the folder ~/.ops and run ops -update", err.Error())
	}

	err = ensurePrereq(localDir)
	if err != nil {
		log.Fatalf("cannot download prerequisites: %v", err)
	}

	// validate OpsVersion semver against opsroot.json
	opsRoot, err := readOpsRootFile(localDir)
	if err != nil {
		return "", err
	}

	// check if the version is up to date
	opsVersion, err := semver.NewVersion(OpsVersion)
	if err != nil {
		// in development mode, we don't have a valid semver version
		warn("Unable to validate ops version", OpsVersion, ":", err)
		return localDir, nil
	}

	opsRootVersion, err := semver.NewVersion(opsRoot.Version)
	if err != nil {
		warn("Unable to validate opsroot.json version", opsRoot.Version, ":", err)
		return localDir, nil
	}

	// check if the version is up to date, if not warn the user
	if opsVersion.LessThan(opsRootVersion) {
		fmt.Println()
		fmt.Printf("Your ops version (%v) is older than the required version (%v).\n", opsVersion, opsRootVersion)
		if err := autoCLIUpdate(); err != nil {
			return "", err
		}
	}

	err = checkOperatorVersion(opsRoot.Config)
	if err == nil {
		fmt.Println()
		fmt.Println("New operator version detected!")
		fmt.Println("Current deployed operator can be updated with: ops update operator")
	}

	return localDir, nil
}