From d1146de6d54fbae4a6979e43b504b34f6883b8a8 Mon Sep 17 00:00:00 2001 From: morganamilo Date: Thu, 19 Jul 2018 22:19:24 +0100 Subject: [PATCH] Show tar diffs as diffs instead of editing When looking at diffs of packages downloaded as tar achives actually show a diff instead of opening the files in the ediror. This diff is against /var/empty so it is not that useful. In realiy this is an excuse to move the srcinfo parsing back down to after the git merge. Viewing the build files in the editor requires the .srcinfos to be parsed to know what .install files are used. Now viewing diffs does not need the srcinfos so they can be moved to after we git merge. Before now the srcinfo would have been of the previous version. This is not much of a problem because we don't really use the srcinfo for much. Checking the arch and pgpkeys which never really change. Recently libc++ changed their pgp keys and yay missed that because it parsed the old srcinfo without the new keys. Viewing a proper diff for tars can be tossed on the todo by doing something along the lines of: mv pkg{,.old} diff pkg{,.old} rm -rf pkg.old But I doubt there are many people out there using tar so it's not much of an issue. --- install.go | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/install.go b/install.go index 79d32b6e..11e302d2 100644 --- a/install.go +++ b/install.go @@ -189,12 +189,6 @@ func install(parser *arguments) error { return err } - //initial srcinfo parse before pkgver() bump - err = parseSRCINFOFiles(do.Aur, srcinfosStale, do.Bases) - if err != nil { - return err - } - var toDiff []*rpc.Pkg var toEdit []*rpc.Pkg @@ -206,7 +200,7 @@ func install(parser *arguments) error { } if len(toDiff) > 0 { - err = showPkgBuildDiffs(toDiff, srcinfosStale, do.Bases, cloned) + err = showPkgBuildDiffs(toDiff, do.Bases, cloned) if err != nil { return err } @@ -228,6 +222,12 @@ func install(parser *arguments) error { return err } + //initial srcinfo parse before pkgver() bump + err = parseSRCINFOFiles(do.Aur, srcinfosStale, do.Bases) + if err != nil { + return err + } + if config.EditMenu { pkgbuildNumberMenu(do.Aur, do.Bases, remoteNamesCache) toEdit, err = editNumberMenu(do.Aur, do.Bases, remoteNamesCache) @@ -650,7 +650,7 @@ func cleanBuilds(pkgs []*rpc.Pkg) { } } -func showPkgBuildDiffs(pkgs []*rpc.Pkg, srcinfos map[string]*gosrc.Srcinfo, bases map[string][]*rpc.Pkg, cloned stringSet) error { +func showPkgBuildDiffs(pkgs []*rpc.Pkg, bases map[string][]*rpc.Pkg, cloned stringSet) error { for _, pkg := range pkgs { dir := filepath.Join(config.BuildDir, pkg.PackageBase) if shouldUseGit(dir) { @@ -681,20 +681,15 @@ func showPkgBuildDiffs(pkgs []*rpc.Pkg, srcinfos map[string]*gosrc.Srcinfo, base return err } } else { - editor, editorArgs := editor() - editorArgs = append(editorArgs, filepath.Join(dir, "PKGBUILD")) - for _, splitPkg := range srcinfos[pkg.PackageBase].SplitPackages() { - if splitPkg.Install != "" { - editorArgs = append(editorArgs, filepath.Join(dir, splitPkg.Install)) - } - } - - editcmd := exec.Command(editor, editorArgs...) - editcmd.Stdin, editcmd.Stdout, editcmd.Stderr = os.Stdin, os.Stdout, os.Stderr - err := editcmd.Run() - if err != nil { - return fmt.Errorf("Editor did not exit successfully, Aborting: %s", err) + args := []string{"diff"} + if useColor { + args = append(args, "--color=always") + } else { + args = append(args, "--color=never") } + args = append(args, "--no-index", "/var/empty", dir) + // git always returns 1. why? I have no idea + show(passToGit(dir, args...)) } }