mirror of
https://github.com/cupcakearmy/autorestic.git
synced 2024-12-23 08:46:25 +00:00
Compare commits
4 Commits
e988de266b
...
0e6b446c86
Author | SHA1 | Date | |
---|---|---|---|
|
0e6b446c86 | ||
|
bbb1c85cad | ||
|
4cc44315ab | ||
|
0a48d13d6c |
@ -7,7 +7,7 @@ COPY . .
|
||||
RUN go build
|
||||
|
||||
FROM restic/restic:0.16.4
|
||||
RUN apk add --no-cache rclone bash curl
|
||||
RUN apk add --no-cache rclone bash curl docker-cli
|
||||
COPY --from=builder /app/autorestic /usr/bin/autorestic
|
||||
ENTRYPOINT []
|
||||
CMD [ "autorestic" ]
|
||||
|
@ -5,7 +5,7 @@ Linux & macOS. Windows is not supported. If you have problems installing please
|
||||
Autorestic requires `bash`, `wget` and `bzip2` to be installed. For most systems these should be already installed.
|
||||
|
||||
```bash
|
||||
wget -qO - https://raw.githubusercontent.com/cupcakearmy/autorestic/master/install.sh | bash
|
||||
sudo bash -c "$(wget -qO - https://raw.githubusercontent.com/cupcakearmy/autorestic/master/install.sh)"
|
||||
```
|
||||
|
||||
## Alternatives
|
||||
|
@ -6,7 +6,6 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
@ -37,7 +36,7 @@ func dlJSON(url string) (GithubRelease, error) {
|
||||
return parsed, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return parsed, err
|
||||
|
||||
@ -73,9 +72,10 @@ func downloadAndInstallAsset(body GithubRelease, name string) error {
|
||||
// Uncompress
|
||||
bz := bzip2.NewReader(resp.Body)
|
||||
|
||||
// Save to tmp
|
||||
// Linux does not support overwriting the file that is currently being overwritten, but it can be deleted and a new one moved in its place.
|
||||
tmp, err := ioutil.TempFile(os.TempDir(), "autorestic-")
|
||||
// Save to tmp file in the same directory as the install directory
|
||||
// Linux does not support overwriting the file that is currently being running
|
||||
// But it can be delete the old one and a new one moved in its place.
|
||||
tmp, err := os.CreateTemp(INSTALL_PATH, "autorestic-")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -89,24 +89,26 @@ func downloadAndInstallAsset(body GithubRelease, name string) error {
|
||||
|
||||
to := path.Join(INSTALL_PATH, name)
|
||||
defer os.Remove(tmp.Name()) // Cleanup temporary file after thread exits
|
||||
if err := os.Rename(tmp.Name(), to); err != nil {
|
||||
colors.Error.Printf("os.Rename() failed (%v), retrying with io.Copy()\n", err.Error())
|
||||
var src *os.File
|
||||
var dst *os.File
|
||||
if src, err = os.Open(tmp.Name()); err != nil {
|
||||
return err
|
||||
}
|
||||
if dst, err = os.Create(to); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := io.Copy(dst, src); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := os.Chmod(to, 0755); err != nil {
|
||||
|
||||
mode := os.FileMode(0755)
|
||||
if originalBin, err := os.Lstat(to); err == nil {
|
||||
mode = originalBin.Mode()
|
||||
err := os.Remove(to)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
err = os.Rename(tmp.Name(), to)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = os.Chmod(to, mode)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
colors.Success.Printf("Successfully installed '%s' under %s\n", name, INSTALL_PATH)
|
||||
return nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user