code: func upgradeToURL(archiveName, binary string, url string) error {
  	fname, err := readRelease(archiveName, filepath.Dir(binary), url)
  	if err != nil {
  		return err
  	}
  	defer os.Remove(fname)
  
  	old := binary + ".old"
  	os.Remove(old)
  	err = os.Rename(binary, old)
  	if err != nil {
  		return err
  	}
  	if err := os.Rename(fname, binary); err != nil {
  		os.Rename(old, binary)
  		return err
  	}
  	return nil
  }
docs: // Upgrade to the given release, saving the previous binary with a ".old" extension.