diff options
Diffstat (limited to 'gentoo-scripts/earch')
-rwxr-xr-x[-rw-r--r--] | gentoo-scripts/earch | 66 |
1 files changed, 46 insertions, 20 deletions
diff --git a/gentoo-scripts/earch b/gentoo-scripts/earch index 7d72dd2..de9f7bd 100644..100755 --- a/gentoo-scripts/earch +++ b/gentoo-scripts/earch @@ -3,10 +3,13 @@ # $Header: $ # Authors: # Eldad Zack <eldad@gentoo.org> - Original application -# Robin H. Johnson <robbat2@gentoo.org> - SLOT and masking support +# Robin H. Johnson <robbat2@gentoo.org> - SLOT and masking support, and many +# other improvements. +# +# Present Maintainer: robbat2@gentoo.org # # earch: Gentoo last arch keyword checking tool, with SLOT and masking support -# version 0.9.2 +# version 0.9.5 import sys import os @@ -34,13 +37,16 @@ def earch_main(): opt_ignore_redundant = False opt_follow_etc_portage = False opt_version = False + opt_quiet = False opt_slot = [] # process commandline try: - (opts,args) = getopt.gnu_getopt(sys.argv[1:],'CcfhHims:orv',['nocolor','category','masking-reasons','help','hide-masked','version','slot=','remove-pkgs','ignore-redundant','follow-etc-portage']) + (opts,args) = getopt.gnu_getopt(sys.argv[1:],'CcfhHims:orv',['nocolor','quiet','category','masking-reasons','help','hide-masked','version','slot=','remove-pkgs','ignore-redundant','follow-etc-portage']) for optkey,optvalue in opts: if optkey == '--nocolor': opt_nocolor = True + if optkey == '--quiet': + opt_quiet = True if optkey == '-c' or optkey == '--category': opt_category = True if optkey == '-f' or optkey == '--follow-etc-portage': @@ -82,7 +88,7 @@ def earch_main(): os.environ["PORTAGE_CALLER"]="repoman" # generate - (ebuildlist,ebuilddata,pkgkeywords) = earch_data_generate(args,slots=opt_slot,hide_masked=opt_hide_masked,include_category=opt_category,ignore_redundant=opt_ignore_redundant,one_slot=opt_one_slot,nocolor=opt_nocolor) + (ebuildlist,ebuilddata,pkgkeywords) = earch_data_generate(args,slots=opt_slot,hide_masked=opt_hide_masked,include_category=opt_category,ignore_redundant=opt_ignore_redundant,one_slot=opt_one_slot,nocolor=opt_nocolor,quiet=opt_quiet) if opt_remove_pkgs: earch_remove_pkgs(ebuildlist,ebuilddata,pkgkeywords) @@ -134,6 +140,12 @@ def earch_help(): print '-s|--slot <SLOT,...>' print ' SLOT values to provide output for, seperated by commas.' print + print '--nocolor' + print ' Disable ANSI color output' + print + print '--quiet' + print ' Squelch Portage python warnings' + print print '-v|--version' print ' earch version output.' print @@ -151,21 +163,27 @@ def earch_manual_getkeywords(pkg): file.close return re.split(" ",keywords) -def earch_data_generate(args,slots=[],hide_masked=False,include_category=False,ignore_redundant=False,one_slot=False,nocolor=False): +def earch_data_generate(args,slots=[],hide_masked=False,include_category=False,ignore_redundant=False,one_slot=False,nocolor=False,quiet=False): + # This makes portage really quiet stderr = sys.stderr - sys.stderr = open('/dev/null', 'w') + if quiet: + sys.stderr = open('/dev/null', 'w') import portage # and reset it sys.stderr = stderr - + # disable color as needed # this is actually out of place, but still the best place to run it # to avoid importing portage twice - if (not sys.stdout.isatty()) or (portage.settings["NOCOLOR"] in ["yes","true","1"] or nocolor): - nocolor() + if nocolor: + portage.settings.unlock() + portage.settings["NOCOLOR"] = '1' + portage.settings.lock() + if (not sys.stdout.isatty()) or (portage.settings["NOCOLOR"] in ["yes","true","1"]): + portage.output.nocolor() portdir = portage.settings["PORTDIR"] - portdb = portage.portdbapi(portdir) + portdb = portage.portdbapi(None, portage.settings) archslotdict = {} ebuildlist = [] ebuilddata = {} @@ -291,16 +309,24 @@ def earch_data_generate(args,slots=[],hide_masked=False,include_category=False,i pk = pkgkeywords[pkg] npk = pk rk = ebuilddata[pkg]['RAW_KEYWORDS'] - def earch_sort_cmp(x,y,src=rk): - ix = src.index(x) - iy = src.index(y) - if(ix > iy): - return 1 - elif(ix < iy): - return -1 - else: - return 0 - npk.sort(cmp=earch_sort_cmp) + if rk is not None: + def earch_sort_cmp(x,y,src=rk): + if x is None and y is None: + return 0 + elif x is None and y is not None: + return 1 + elif x is not None and y is None: + return -1 + # nobody is None + ix = src.index(x) + iy = src.index(y) + if(ix > iy): + return 1 + elif(ix < iy): + return -1 + else: + return 0 + npk.sort(cmp=earch_sort_cmp) pkgkeywords[pkg] = npk return (ebuildlist,ebuilddata,pkgkeywords) |