diff -Naru esearch-0.7.1/esearch.py esearch-0.7.1-tmp/esearch.py --- esearch-0.7.1/esearch.py 2006-05-16 19:12:07.795314560 +0200 +++ esearch-0.7.1-tmp/esearch.py 2006-05-18 23:08:28.363580608 +0200 @@ -64,16 +64,16 @@ if fatal: sys.exit(1) -def searchEbuilds(path, portdir = True, searchdef = ""): - global ebuilds, output, defebuild +def searchEbuilds(path, portdir = True, searchdef = "", repo_num = ""): + global ebuilds, output, defebuild, found_in_overlay pv = "" pkgs = [] nr = len(ebuilds) + 1 if portdir: - rep = darkgreen("Portage") + rep = darkgreen("Portage ") else: - rep = red("Overlay") + rep = red("Overlay "+str(repo_num)+" ") if isdir(path): list = listdir(path) @@ -82,18 +82,20 @@ if file[-7:] == ".ebuild": pv = file[:-7] pkgs.append(pkgsplit(pv)) - pkgs[-1].append(path + "/" + file) + pkgs[-1].append(path + file) if searchdef != "" and pv == searchdef: defebuild = (searchdef, pkgs[-1][3]) + if not portdir: + found_in_overlay = True pkgs.sort(pkgcmp) for pkg in pkgs: rev = "" if pkg[2] != "r0": rev = "-" + pkg[2] output.append(" " + rep + " [" + bold(str(nr)) + "] " + pkg[0] + "-" + pkg[1] + rev + "\n") - ebuilds.append(pkg[3]) + ebuilds.append(pkg[len(pkg)-1]) nr += 1 - + NORMAL = 1 COMPACT = 2 VERBOSE = 3 @@ -105,6 +107,7 @@ fullname = False pattern = False instonly = False +found_in_overlay = False try: opts = getopt(sys.argv[1:], "hSFIcveo:d:n", ["help", "searchdesc", "fullname", "instonly", "compact", "verbose", "ebuild", "own=", "directory=", "nocolor"]) @@ -128,7 +131,7 @@ from output import blue from common import version outputm = VERBOSE - elif arg in ("-e", "--ebuilds"): + elif arg in ("-e", "--ebuild"): from os import listdir, getenv, system from os.path import isdir from portage import settings, pkgcmp, pkgsplit @@ -313,12 +316,14 @@ else: searchdef = "" - searchEbuilds("%s/%s/" % (portdir, pkg[1]), True, searchdef) + searchEbuilds("%s/%s/" % (portdir, pkg[1]), True, searchdef, "") if overlay: - searchEbuilds("%s/%s/" % (overlay, pkg[1]), False, searchdef) + repo_num=1 + for repo in overlay.split(): + searchEbuilds("%s/%s/" % ( repo, pkg[1]), False, searchdef,repo_num) + repo_num += 1 output.append("\n") - count += 1 regexlist[i][2] = "".join(output) @@ -338,34 +343,42 @@ if outputm == NORMAL: print "" -if outputm == EBUILDS and count != 0: - if count > 1: - defebuild = (0, 0) - if len(ebuilds) == 1: - nr = 1 - else: - if defebuild[0] != 0: - print bold("Show Ebuild"), " (" + darkgreen(defebuild[0]) + "): ", +if outputm == EBUILDS: + if overlay and found_in_overlay: + repo_num=1 + for repo in overlay.split(): + print red("Overlay "+str(repo_num)+" : "+repo) + repo_num += 1 + + if count != 0: + if count > 1: + defebuild = (0, 0) + + if len(ebuilds) == 1: + nr = 1 else: - print bold("Show Ebuild: "), + if defebuild[0] != 0: + print bold("\nShow Ebuild"), " (" + darkgreen(defebuild[0]) + "): ", + else: + print bold("\nShow Ebuild: "), + try: + nr = sys.stdin.readline() + except KeyboardInterrupt: + sys.exit(1) try: - nr = sys.stdin.readline() - except KeyboardInterrupt: - sys.exit(1) - try: - editor = getenv("EDITOR") - if editor: - system(editor + " " + ebuilds[int(nr) - 1]) - else: - print "" - error("Please set EDITOR", False) - except IndexError: - print "" - error("No such ebuild", False) - except ValueError: - if defebuild[0] != 0: - system(editor + " " + defebuild[1]) - else: + editor = getenv("EDITOR") + if editor: + system(editor + " " + ebuilds[int(nr) - 1]) + else: + print "" + error("Please set EDITOR", False) + except IndexError: print "" - error("Please enter a valid number", False) + error("No such ebuild", False) + except ValueError: + if defebuild[0] != 0: + system(editor + " " + defebuild[1]) + else: + print "" + error("Please enter a valid number", False)