fix: windows installation for restic 0.17.1 (#474)

Note: this fix relocates the restic binary on windows to C:\Program Files\backrest  OR to the directory where backrest is installed (path relative).
This commit is contained in:
Gareth
2024-09-14 02:57:50 -07:00
committed by GitHub
parent d2650fdd59
commit 4da9d89749
3 changed files with 7 additions and 10 deletions

View File

@@ -32,7 +32,7 @@ func ConfigFilePath() string {
if val := os.Getenv(EnvVarConfigPath); val != "" { if val := os.Getenv(EnvVarConfigPath); val != "" {
return val return val
} }
return path.Join(getConfigDir(), "backrest/config.json") return filepath.Join(getConfigDir(), "backrest", "config.json")
} }
// DataDir // DataDir
@@ -50,7 +50,7 @@ func DataDir() string {
} }
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
return path.Join(getConfigDir(), "backrest/data") return filepath.Join(getConfigDir(), "backrest", "data")
} }
return path.Join(getHomeDir(), ".local/share/backrest") return path.Join(getHomeDir(), ".local/share/backrest")
} }
@@ -99,7 +99,7 @@ func getConfigDir() string {
if val := os.Getenv("XDG_CONFIG_HOME"); val != "" { if val := os.Getenv("XDG_CONFIG_HOME"); val != "" {
return val return val
} }
return path.Join(getHomeDir(), ".config") return filepath.Join(getHomeDir(), ".config")
} }
func formatBindAddress(addr string) string { func formatBindAddress(addr string) string {

View File

@@ -14,6 +14,7 @@ import (
"os" "os"
"os/exec" "os/exec"
"path" "path"
"path/filepath"
"runtime" "runtime"
"strings" "strings"
"sync" "sync"
@@ -245,8 +246,8 @@ func FindOrInstallResticBinary() (string, error) {
// Check for restic installation in data directory. // Check for restic installation in data directory.
resticInstallPath := path.Join(env.DataDir(), resticBinName) resticInstallPath := path.Join(env.DataDir(), resticBinName)
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
programFiles := os.Getenv("programfiles") // on windows use a path relative to the executable.
resticInstallPath = path.Join(programFiles, "backrest", resticBinName) resticInstallPath, _ = filepath.Abs(path.Join(path.Dir(os.Args[0]), resticBinName))
} }
// Install restic if not found. // Install restic if not found.

View File

@@ -168,12 +168,8 @@ func TestResticPartialBackup(t *testing.T) {
t.Fatalf("wanted summary, got: nil") t.Fatalf("wanted summary, got: nil")
} }
if summary.TotalFilesProcessed != 0 {
t.Errorf("wanted 0 files, got: %d", summary.TotalFilesProcessed)
}
if !slices.ContainsFunc(entries, func(e BackupProgressEntry) bool { if !slices.ContainsFunc(entries, func(e BackupProgressEntry) bool {
return e.MessageType == "error" && e.Item == unreadablePath return e.MessageType == "error" && strings.Contains(e.Item, unreadablePath)
}) { }) {
t.Errorf("wanted entries to contain an error event for the unreadable file (%s), but did not find it", unreadablePath) t.Errorf("wanted entries to contain an error event for the unreadable file (%s), but did not find it", unreadablePath)
t.Logf("entries:\n") t.Logf("entries:\n")