123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- // Clean Build Menu functions
- package menus
- import (
- "fmt"
- "os"
- "path/filepath"
- "github.com/leonelquinteros/gotext"
- "github.com/Jguer/yay/v11/pkg/dep"
- "github.com/Jguer/yay/v11/pkg/stringset"
- "github.com/Jguer/yay/v11/pkg/text"
- )
- func anyExistInCache(buildDir string, bases []dep.Base) bool {
- for _, base := range bases {
- pkg := base.Pkgbase()
- dir := filepath.Join(buildDir, pkg)
- if _, err := os.Stat(dir); !os.IsNotExist(err) {
- return true
- }
- }
- return false
- }
- func Clean(cleanMenuOption bool, buildDir string, bases []dep.Base,
- installed stringset.StringSet, noConfirm bool, answerClean string) error {
- if !(cleanMenuOption && anyExistInCache(buildDir, bases)) {
- return nil
- }
- skipFunc := func(pkg string) bool {
- dir := filepath.Join(buildDir, pkg)
- if _, err := os.Stat(dir); os.IsNotExist(err) {
- return true
- }
- return false
- }
- toClean, errClean := selectionMenu(buildDir, bases, installed, gotext.Get("Packages to cleanBuild?"),
- noConfirm, answerClean, skipFunc)
- if errClean != nil {
- return errClean
- }
- for i, base := range toClean {
- dir := filepath.Join(buildDir, base.Pkgbase())
- text.OperationInfoln(gotext.Get("Deleting (%d/%d): %s", i+1, len(toClean), text.Cyan(dir)))
- if err := os.RemoveAll(dir); err != nil {
- fmt.Fprintln(os.Stderr, err)
- }
- }
- return nil
- }
|