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
}