Files
yay/pkg/sync/workdir/clean.go
T
github-actions[bot] f76bbba9be refactor(workdir): remove unnecessary global NoConfirm mutation in removeMake (#2906)
refactor(workdir): remove unnecessary global NoConfirm mutation in removeMake

removeMake always removes packages non-interactively, so it sets
settings.NoConfirm = true, calls BuildPacmanCmd, then restores the
original value. This pattern is thread-unsafe and redundant because
BuildPacmanCmd already accepts a noConfirm bool parameter.

Pass true directly to BuildPacmanCmd, eliminating the global mutation.
2026-07-19 01:58:04 +02:00

62 lines
1.6 KiB
Go

package workdir
import (
"context"
"github.com/leonelquinteros/gotext"
"github.com/Jguer/yay/v13/pkg/runtime"
"github.com/Jguer/yay/v13/pkg/settings"
"github.com/Jguer/yay/v13/pkg/settings/exe"
"github.com/Jguer/yay/v13/pkg/settings/parser"
"github.com/Jguer/yay/v13/pkg/text"
)
func removeMake(ctx context.Context, config *settings.Configuration,
cmdBuilder exe.ICmdBuilder, makeDeps []string, cmdArgs *parser.Arguments,
) error {
removeArguments := cmdArgs.CopyGlobal()
err := removeArguments.AddArg("R", "s", "u")
if err != nil {
return err
}
for _, pkg := range makeDeps {
removeArguments.AddTarget(pkg)
}
// removeMake always runs non-interactively; pass noConfirm=true directly
// rather than mutating the global settings.NoConfirm.
err = cmdBuilder.Show(cmdBuilder.BuildPacmanCmd(ctx,
removeArguments, config.Mode, true))
return err
}
func cleanAfter(ctx context.Context, run *runtime.Runtime,
cmdBuilder exe.ICmdBuilder, pkgbuildDirs map[string]string,
) {
run.Logger.Println(gotext.Get("removing untracked AUR files from cache..."))
i := 0
for _, dir := range pkgbuildDirs {
run.Logger.OperationInfoln(gotext.Get("Cleaning (%d/%d): %s", i+1, len(pkgbuildDirs), text.Cyan(dir)))
_, stderr, err := cmdBuilder.Capture(
cmdBuilder.BuildGitCmd(
ctx, dir, "reset", "--hard", "HEAD"))
if err != nil {
run.Logger.Errorln(gotext.Get("error resetting %s: %s", dir, stderr))
}
if err := run.CmdBuilder.Show(
run.CmdBuilder.BuildGitCmd(
ctx, dir, "clean", "-fx", "--exclude", "*.pkg.*")); err != nil {
run.Logger.Errorln(err)
}
i++
}
}