Implement manual -upgrade-to option

This commit is contained in:
Jakob Borg
2014-12-22 12:07:04 +01:00
parent 110816c7aa
commit cde8ef56e5
4 changed files with 57 additions and 17 deletions

View File

@@ -80,28 +80,33 @@ func upgradeTo(binary string, rel Release) error {
}
if strings.HasPrefix(assetName, expectedRelease) {
fname, err := readRelease(filepath.Dir(binary), asset.URL)
if err != nil {
return err
}
old := binary + ".old"
_ = os.Remove(old)
err = os.Rename(binary, old)
if err != nil {
return err
}
err = os.Rename(fname, binary)
if err != nil {
return err
}
return nil
upgradeToURL(binary, asset.URL)
}
}
return ErrVersionUnknown
}
// Upgrade to the given release, saving the previous binary with a ".old" extension.
func upgradeToURL(binary string, url string) error {
fname, err := readRelease(filepath.Dir(binary), url)
if err != nil {
return err
}
old := binary + ".old"
_ = os.Remove(old)
err = os.Rename(binary, old)
if err != nil {
return err
}
err = os.Rename(fname, binary)
if err != nil {
return err
}
return nil
}
func readRelease(dir, url string) (string, error) {
if debug {
l.Debugf("loading %q", url)