From f7b82a949ae40336fea61d870397af9aa2789f36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=92=D0=BB=D0=B0=D1=81?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Mon, 16 Jun 2025 23:15:31 +0500 Subject: [PATCH] added variables: scriptUpdate, scriptUpdateExt, tmpFile | added function downloadFile --- update.go | 65 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 18 deletions(-) diff --git a/update.go b/update.go index 06e7c50..66526e9 100644 --- a/update.go +++ b/update.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "io" "net/http" "os" "os/exec" @@ -47,25 +48,53 @@ func AutoCommitUpdate() { fmt.Printf("updating to version %s...\n", strings.TrimSpace(data.TagName)) - // ps1 || bash + var scriptUpdate string + var scriptUpdateExt string if runtime.GOOS == "windows" { - script := fmt.Sprintf("%s/scripts/update-windows-auto-commit.ps1", root) - cmd := exec.Command("powershell", "-NoProfile", "-ExecutionPolicy", "Bypass", "-File", script) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - - if err := cmd.Run(); err != nil { - ErrorLogger(fmt.Errorf("failed to run update script: %w", err)) - return - } + scriptUpdate = "https://github.com/thefuture-industries/git-auto-commit/raw/main/scripts/update-windows-auto-commit.ps1" + scriptUpdateExt = ".ps1" } else { - script := fmt.Sprintf("%s/scripts/update-linux-auto-commit.sh", root) - cmd := exec.Command("bash", script) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - ErrorLogger(fmt.Errorf("failed to run bash script: %w", err)) - return - } + scriptUpdate = "https://github.com/thefuture-industries/git-auto-commit/raw/main/scripts/update-linux-auto-commit.sh" + scriptUpdateExt = ".sh" } + + tmpFile := filepath.Join(os.TempDir(), "auto-commit-update"+scriptUpdateExt) + err = downloadFile(scriptUpdate, tmpFile) + if err != nil { + ErrorLogger(fmt.Errorf("failed to download update script: %v", err)) + return + } + defer os.Remove(tmpFile) + + var cmd *exec.Cmd + if runtime.GOOS == "windows" { + cmd = exec.Command("powershell", "-NoProfile", "-ExecutionPolicy", "Bypass", "-File", tmpFile) + } else { + cmd = exec.Command("bash", tmpFile) + } + + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + if err := cmd.Run(); err != nil { + ErrorLogger(fmt.Errorf("failed to run update script: %v", err)) + return + } +} + +func downloadFile(url, filepath string) error { + resp, err := http.Get(url) + if err != nil { + return err + } + defer resp.Body.Close() + + out, err := os.Create(filepath) + if err != nil { + return err + } + defer out.Close() + + _, err = io.Copy(out, resp.Body) + return err }