Merge pull request #738 from Morganamilo/fix#736

Rework cleanafter
This commit is contained in:
Anna 2018-10-04 09:18:57 +01:00 committed by GitHub
commit 6ee14d44b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 56 additions and 24 deletions

View file

@ -187,9 +187,8 @@ func cleanUntracked() error {
}
dir := filepath.Join(config.BuildDir, file.Name())
if shouldUseGit(dir) {
if err = show(passToGit(dir, "clean", "-fx")); err != nil {
if err := show(passToGit(dir, "clean", "-fx")); err != nil {
return err
}
}
@ -197,3 +196,36 @@ func cleanUntracked() error {
return nil
}
func cleanAfter(bases []Base) {
fmt.Println("removing Untracked AUR files from cache...")
for i, base := range bases {
dir := filepath.Join(config.BuildDir, base.Pkgbase())
if shouldUseGit(dir) {
fmt.Printf(bold(cyan("::")+" Cleaning (%d/%d): %s\n"), i+1, len(bases), cyan(dir))
_, stderr, err := capture(passToGit(dir, "reset", "--hard", "HEAD"))
if err != nil {
fmt.Printf("error resetting %s: %s", base.String(), stderr)
}
show(passToGit(dir, "clean", "-fx"))
} else {
fmt.Printf(bold(cyan("::")+" Deleting (%d/%d): %s\n"), i+1, len(bases), cyan(dir))
if err := os.RemoveAll(dir); err != nil {
fmt.Println(err)
}
}
}
}
func cleanBuilds(bases []Base) {
for i, base := range bases {
dir := filepath.Join(config.BuildDir, base.Pkgbase())
fmt.Printf(bold(cyan("::")+" Deleting (%d/%d): %s\n"), i+1, len(bases), cyan(dir))
if err := os.RemoveAll(dir); err != nil {
fmt.Println(err)
}
}
}

4
cmd.go
View file

@ -79,8 +79,8 @@ Permanent configuration options:
--removemake Remove makedepends after install
--noremovemake Don't remove makedepends after install
--afterclean Remove package sources after successful install
--noafterclean Do not remove package sources after successful build
--cleanafter Remove package sources after successful install
--nocleanafter Do not remove package sources after successful build
--bottomup Shows AUR's packages first and then repository's
--topdown Shows repository's packages first and then AUR's

View file

@ -66,7 +66,7 @@ _yay() {
makepkg pacman tar git gpg gpgflags config requestsplitn sudoloop nosudoloop
redownload noredownload redownloadall rebuild rebuildall rebuildtree norebuild
sortby answerclean answerdiff answeredit answerupgrade noanswerclean noanswerdiff
noansweredit noanswerupgrade cleanmenu diffmenu editmenu upgrademenu
noansweredit noanswerupgrade cleanmenu diffmenu editmenu upgrademenu cleanafter nocleanafter
nocleanmenu nodiffmenu noupgrademenu provides noprovides pgpfetch nopgpfetch
useask nouseask combinedupgrade nocombinedupgrade aur repo makepkgconf
nomakepkgconf askremovemake removemake noremovemake completioninterval aururl'

View file

@ -65,8 +65,8 @@ complete -c $progname -n "not $noopt" -l topdown -d 'Shows repository packages f
complete -c $progname -n "not $noopt" -l bottomup -d 'Shows aur packages first and then repository' -f
complete -c $progname -n "not $noopt" -l devel -d 'Check -git/-svn/-hg development version' -f
complete -c $progname -n "not $noopt" -l nodevel -d 'Disable development version checking' -f
complete -c $progname -n "not $noopt" -l afterclean -d 'Clean package sources after successful build' -f
complete -c $progname -n "not $noopt" -l noafterclean -d 'Disable package sources cleaning' -f
complete -c $progname -n "not $noopt" -l cleanafter -d 'Clean package sources after successful build' -f
complete -c $progname -n "not $noopt" -l nocleanafter -d 'Disable package sources cleaning' -f
complete -c $progname -n "not $noopt" -l timeupdate -d 'Check package modification date and version' -f
complete -c $progname -n "not $noopt" -l notimeupdate -d 'Check only package version change' -f

View file

@ -80,8 +80,8 @@ _pacman_opts_common=(
'--topdown[Show repository packages first]'
'--devel[Check -git/-svn/-hg development version]'
'--nodevel[Disable development version checking]'
'--afterclean[Clean package sources after successful build]'
'--noafterclean[Disable package sources cleaning after successful build]'
'--cleanafter[Clean package sources after successful build]'
'--nocleanafter[Disable package sources cleaning after successful build]'
'--timeupdate[Check packages modification date and version]'
'--notimeupdate[Check only package version change]'
'--redownload[Always download pkgbuilds of targets]'

View file

@ -359,11 +359,17 @@ Download and update PKGBUILDs using tarballs. The above conditions about
previously installed packages still apply.
.TP
.B \-\-afterclean
.B \-\-cleanafter
Remove package sources after successful Install.
For packages downloaded through git, untracked files are removed with the
exception of directories. This allows VCS packages to ealily pull an update
instead of having to re clone the entire repo.
For packages downloaded via tarball, The entire directory is deleted.
.TP
.B \-\-noafterclean
.B \-\-nocleanafter
Do not remove package sources after successful Install.
.TP

View file

@ -341,7 +341,7 @@ func install(parser *arguments) error {
}
if config.CleanAfter {
cleanBuilds(do.Aur)
cleanAfter(do.Aur)
}
return nil
@ -680,14 +680,6 @@ func editDiffNumberMenu(bases []Base, installed stringSet, diff bool) ([]Base, e
return toEdit, nil
}
func cleanBuilds(bases []Base) {
for i, base := range bases {
dir := filepath.Join(config.BuildDir, base.Pkgbase())
fmt.Printf(bold(cyan("::")+" Deleting (%d/%d): %s\n"), i+1, len(bases), cyan(dir))
os.RemoveAll(dir)
}
}
func showPkgbuildDiffs(bases []Base, cloned stringSet) error {
for _, base := range bases {
pkg := base.Pkgbase()
@ -962,12 +954,14 @@ func buildInstallPkgbuilds(dp *depPool, do *depOrder, srcinfos map[string]*gosrc
}
if installed {
show(passToMakepkg(dir, "-c", "--nobuild", "--noextract", "--ignorearch"))
fmt.Println(cyan(pkg+"-"+version) + bold(" is up to date -- skipping"))
continue
}
}
if built {
show(passToMakepkg(dir, "-c", "--nobuild", "--noextract", "--ignorearch"))
fmt.Println(bold(yellow(arrow)),
cyan(pkg+"-"+version)+bold(" already made -- skipping build"))
} else {

View file

@ -419,8 +419,8 @@ func isArg(arg string) bool {
//yay options
case "aururl":
case "save":
case "afterclean":
case "noafterclean":
case "afterclean", "cleanafter":
case "noafterclean", "nocleanafter":
case "devel":
case "nodevel":
case "timeupdate":
@ -501,9 +501,9 @@ func handleConfig(option, value string) bool {
config.AURURL = value
case "save":
shouldSaveConfig = true
case "afterclean":
case "afterclean", "cleanafter":
config.CleanAfter = true
case "noafterclean":
case "noafterclean", "nocleanafter":
config.CleanAfter = false
case "devel":
config.Devel = true