/
update_unix.go
46 lines (35 loc) · 1.11 KB
/
update_unix.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// +build !windows
package update
import (
"io/ioutil"
"os"
"github.com/181192/ops-cli/pkg/download"
"github.com/hashicorp/go-getter"
logger "github.com/sirupsen/logrus"
)
// Update downloads a github release if its not present in the local config folder
func (release *opsCliRelease) Update() {
url, update := release.getLatestDownloadURL()
if !update {
return
}
progress := getter.WithProgress(download.DefaultProgressBar)
logger.Infof("Attempting to download %s, version %s, to %q from %s", release.Name, release.Version, release.LocalFileName, url)
tmpDir, err := ioutil.TempDir("", "ops-cli")
if err != nil {
logger.Fatalf("%s\nFailed to create temp directory", err)
}
defer os.RemoveAll(tmpDir)
err = getter.GetAny(tmpDir, url, progress)
if err != nil {
logger.Fatalf("%s\nFailed to to download external binaries", err)
}
err = os.Rename(tmpDir+string(os.PathSeparator)+release.ArtifactName, release.LocalFileName)
if err != nil {
logger.Fatalf("%s\nFailed to move binaries", err)
}
err = os.Chmod(release.LocalFileName, 0775)
if err != nil {
logger.Fatalf("%s\nFailed chmod", err)
}
}