func MaybeUpdate(output io.Writer, githubOwner, githubRepo, binaryName, lastUpdatePath string, localVersion semver.Version) { downloadBinary := binaryName + "-" + runtime.GOOS + "-" + runtime.GOARCH updateLinkPrefix := "https://github.com/" + githubOwner + "/" + githubRepo + "/releases/tag/" + version.VersionPrefix downloadLinkFormat := "https://github.com/" + githubOwner + "/" + githubRepo + "/releases/download/v%s/%s" if !shouldCheckURLVersion(lastUpdatePath) { return } latestVersion, err := getLatestVersionFromGitHub(githubOwner, githubRepo) if err != nil { glog.Errorln(err) return } if localVersion.Compare(latestVersion) < 0 { writeTimeToFile(lastUpdatePath, time.Now().UTC()) fmt.Fprintf(output, `There is a newer version of %s available. Do you want to automatically update from %s%s to %s%s now? [y/N] `, binaryName, version.VersionPrefix, localVersion, version.VersionPrefix, latestVersion) var confirm string fmt.Scanln(&confirm) if confirm == "y" { fmt.Printf("Updating to version %s\n", latestVersion) updateBinary(latestVersion, downloadBinary, updateLinkPrefix, downloadLinkFormat) return } fmt.Println("Skipping autoupdate") } }