diff --git a/pkg/log/log.go b/pkg/log/log.go index c9152c9..5762011 100644 --- a/pkg/log/log.go +++ b/pkg/log/log.go @@ -4,7 +4,9 @@ import ( "fmt" "io" "os" + "os/exec" "path/filepath" + "strings" "time" ) @@ -43,6 +45,12 @@ func Write(msg []byte) { logFile.Write(msg) } +func Command(name string, args ...string) *exec.Cmd { + cmdStr := name + " " + strings.Join(args, " ") + fmt.Fprintf(logFile, "[cmd] %s\n", cmdStr) + return exec.Command(name, args...) +} + func Close() error { if logFile == nil { return nil diff --git a/pkg/pacman/sync/sync.go b/pkg/pacman/sync/sync.go index a59b10f..772fb98 100644 --- a/pkg/pacman/sync/sync.go +++ b/pkg/pacman/sync/sync.go @@ -4,7 +4,6 @@ import ( "fmt" "io" "os" - "os/exec" "strings" "time" @@ -25,9 +24,7 @@ func SyncPackages(packages []string, logWriter io.Writer) error { } args := append([]string{"-S", "--needed", "--noconfirm"}, packages...) - cmdStr := "pacman " + strings.Join(args, " ") - fmt.Fprintf(logWriter, "[cmd] %s\n", cmdStr) - cmd := exec.Command("pacman", args...) + cmd := log.Command("pacman", args...) cmd.Stdout = logWriter cmd.Stderr = logWriter err := cmd.Run() @@ -47,8 +44,7 @@ func RefreshDB(logWriter io.Writer) error { logWriter = os.Stderr } - fmt.Fprintf(logWriter, "[cmd] pacman -Syy\n") - cmd := exec.Command("pacman", "-Syy") + cmd := log.Command("pacman", "-Syy") cmd.Stdout = logWriter cmd.Stderr = logWriter if err := cmd.Run(); err != nil { @@ -72,9 +68,7 @@ func MarkAs(packages []string, flag string, logWriter io.Writer) error { } args := append([]string{"-D", "--" + flagName}, packages...) - cmdStr := "pacman " + strings.Join(args, " ") - fmt.Fprintf(logWriter, "[cmd] %s\n", cmdStr) - cmd := exec.Command("pacman", args...) + cmd := log.Command("pacman", args...) cmd.Stdout = logWriter cmd.Stderr = logWriter err := cmd.Run() @@ -102,9 +96,7 @@ func RemoveOrphans(orphans []string, logWriter io.Writer) (int, error) { args := make([]string, 0, 3+len(orphans)) args = append(args, "pacman", "-Rns", "--noconfirm") args = append(args, orphans...) - cmdStr := strings.Join(args, " ") - fmt.Fprintf(logWriter, "[cmd] %s\n", cmdStr) - removeCmd := exec.Command(args[0], args[1:]...) + removeCmd := log.Command(args[0], args[1:]...) removeCmd.Stdout = logWriter removeCmd.Stderr = logWriter err := removeCmd.Run() @@ -134,19 +126,15 @@ func InstallAUR(pkgName string, packageBase string, logWriter io.Writer) error { } } - tmpDir := "/tmp/declpac-aur-" + pkgName - mkdirCmdStr := "su - " + sudoUser + " -c 'rm -rf " + tmpDir + " && mkdir -p " + tmpDir + "'" - fmt.Fprintf(logWriter, "[cmd] %s\n", mkdirCmdStr) - mkdirCmd := exec.Command("su", "-", sudoUser, "-c", "rm -rf "+tmpDir+" && mkdir -p "+tmpDir) + tmpDir := "/tmp/declpac/" + pkgName + mkdirCmd := log.Command("su", "-", sudoUser, "-c", "rm -rf "+tmpDir+" && mkdir -p "+tmpDir) if err := mkdirCmd.Run(); err != nil { return fmt.Errorf("failed to create temp directory: %w", err) } defer os.RemoveAll(tmpDir) cloneURL := "https://aur.archlinux.org/" + packageBase + ".git" - cloneCmdStr := "su - " + sudoUser + " -c 'git clone " + cloneURL + " " + tmpDir + "'" - fmt.Fprintf(logWriter, "[cmd] %s\n", cloneCmdStr) - cloneCmd := exec.Command("su", "-", sudoUser, "-c", "git clone "+cloneURL+" "+tmpDir) + cloneCmd := log.Command("su", "-", sudoUser, "-c", "git clone "+cloneURL+" "+tmpDir) cloneCmd.Stdout = logWriter cloneCmd.Stderr = logWriter if err := cloneCmd.Run(); err != nil { @@ -154,9 +142,7 @@ func InstallAUR(pkgName string, packageBase string, logWriter io.Writer) error { } log.Debug("InstallAUR: cloned (%.2fs)", time.Since(start).Seconds()) - makepkgCmdStr := "su - " + sudoUser + " -c 'cd " + tmpDir + " && makepkg -s --noconfirm'" - fmt.Fprintf(logWriter, "[cmd] %s\n", makepkgCmdStr) - makepkgCmd := exec.Command("su", "-", sudoUser, "-c", "cd "+tmpDir+" && makepkg -s --noconfirm") + makepkgCmd := log.Command("su", "-", sudoUser, "-c", "cd "+tmpDir+" && makepkg -s --noconfirm") makepkgCmd.Stdout = logWriter makepkgCmd.Stderr = logWriter if err := makepkgCmd.Run(); err != nil { @@ -169,9 +155,7 @@ func InstallAUR(pkgName string, packageBase string, logWriter io.Writer) error { return fmt.Errorf("failed to find built package: %w", err) } - installCmdStr := "pacman -U --noconfirm " + pkgFile - fmt.Fprintf(logWriter, "[cmd] %s\n", installCmdStr) - installCmd := exec.Command("pacman", "-U", "--noconfirm", pkgFile) + installCmd := log.Command("pacman", "-U", "--noconfirm", pkgFile) installCmd.Stdout = logWriter installCmd.Stderr = logWriter if err := installCmd.Run(); err != nil {