diff --git a/handlers/reagent b/handlers/reagent index 5ef311d93..0fe6e964f 100644 --- a/handlers/reagent +++ b/handlers/reagent @@ -43,13 +43,13 @@ def print_help(): entropyTools.print_info(" --version\t\tprint version") entropyTools.print_info(" --nocolor\t\tdisable colorized output") entropyTools.print_info(entropyTools.blue("Tools available: ")) - entropyTools.print_info(" \t"+entropyTools.green("generator")+entropyTools.yellow("\t to create .etp file from a specified .tbz2 file")) - entropyTools.print_info(" \t\t"+entropyTools.red("--force-bump")+"\t\t force the revision bumping of the .etp files") + entropyTools.print_info(" \t"+entropyTools.green("generator")+entropyTools.yellow("\t to add the package to the database, revision bump if needed")) + entropyTools.print_info(" \t\t"+entropyTools.red("--force-bump")+"\t\t to force the revision bumping of the package entry") entropyTools.print_info(" \t"+entropyTools.green("digest")+entropyTools.yellow("\t\t to digest a specified directory")) entropyTools.print_info(" \t"+entropyTools.green("enzyme")+entropyTools.yellow("\t\t to analyze enzyme store directory")) - entropyTools.print_info(" \t\t"+entropyTools.red("--force-bump")+"\t\t force the revision bumping of the .etp files") + entropyTools.print_info(" \t\t"+entropyTools.red("--force-bump")+"\t\t to force the revision bumping of the package entries") entropyTools.print_info(" \t"+entropyTools.green(entropyTools.bold("database"))+entropyTools.yellow("\t Entropy database tool manager.")) - entropyTools.print_info(" \t\t"+entropyTools.red("--initialize")+"\t\t (Re)Initialize the Entropy packages database") + entropyTools.print_info(" \t\t"+entropyTools.red("--initialize")+"\t\t (Re)Initialize the Entropy packages database [DO NOT USE THIS]") entropyTools.print_info(" \t\t"+entropyTools.green("search")+"\t\t\t Search a package inside the Entropy packages database") entropyTools.print_info(" \t"+entropyTools.green(entropyTools.bold("cleanup"))+entropyTools.yellow("\t\t to clean temporary files")) diff --git a/libraries/activatorTools.py b/libraries/activatorTools.py index baac12b1c..3f0296411 100644 --- a/libraries/activatorTools.py +++ b/libraries/activatorTools.py @@ -21,6 +21,7 @@ ''' # Never do "import portage" here, please use entropyTools binding +# EXIT STATUSES: 400-499 from entropyConstants import * from entropyTools import * @@ -352,4 +353,4 @@ def database(options): else: print_error(green(" * ")+green("No valid tool specified.")) - sys.exit(100) + sys.exit(400) diff --git a/libraries/databaseTools.py b/libraries/databaseTools.py index 693bc7dd6..a6e053e44 100644 --- a/libraries/databaseTools.py +++ b/libraries/databaseTools.py @@ -21,6 +21,7 @@ ''' # Never do "import portage" here, please use entropyTools binding +# EXIT STATUSES: 300-399 from entropyConstants import * from entropyTools import * @@ -33,15 +34,15 @@ import sys def database(options): if len(options) == 0: - print "not enough options" - sys.exit(1) + print_error(yellow(" * ")+red("Not enough parameters")) + sys.exit(301) if (options[0] == "--initialize"): # initialize the database print_info(green(" * ")+red("Initializing Entropy database..."), back = True) # database file: etpConst['etpdatabasefile'] if os.path.isfile(etpConst['etpdatabasefile']): - print_info(red(" * ")+bold("WARNING")+red(": database file already exists.")) + print_info(red(" * ")+bold("WARNING")+red(": database file already exists. Overwriting.")) rc = askquestion("\n Do you want to continue ?") if rc == "No": sys.exit(0) @@ -54,8 +55,63 @@ def database(options): print_info(green(" * ")+red("Entropy database initialized.")) elif (options[0] == "search"): + mykeywords = options[1:] + if (len(mykeywords) == 0): + print_error(yellow(" * ")+red("Not enough parameters")) + sys.exit(302) # search tool - print "search" + print_info(green(" * ")+red("Searching inside the Entropy database...")) + dbconn = etpDatabase() + for mykeyword in mykeywords: + results = dbconn.searchPackages(mykeyword) + for result in results: + print + print_info(green(" * ")+bold(result[0])) # package atom + print_info(red("\t Name: ")+blue(result[1])) + print_info(red("\t Installed version: ")+blue(result[2])) + if (result[3]): + print_info(red("\t Description: ")+result[3]) + print_info(red("\t CHOST: ")+blue(result[5])) + print_info(red("\t CFLAGS: ")+darkred(result[6])) + print_info(red("\t CXXFLAGS: ")+darkred(result[7])) + if (result[8]): + print_info(red("\t Website: ")+result[8]) + print_info(red("\t USE Flags: ")+blue(result[9])) + print_info(red("\t License: ")+bold(result[10])) + print_info(red("\t Source keywords: ")+darkblue(result[11])) + print_info(red("\t Binary keywords: ")+green(result[12])) + print_info(red("\t Package path: ")+result[13]) + print_info(red("\t Download relative URL: ")+result[14]) + print_info(red("\t Package Checksum: ")+green(result[15])) + if (result[16]): + print_info(red("\t Sources")) + sources = result[16].split() + for source in sources: + print_info(darkred("\t # Source package: ")+yellow(source)) + if (result[17]): + print_info(red("\t Slot: ")+yellow(result[17])) + #print_info(red("\t Blah: ")+result[18]) # I don't need to print mirrorlinks + if (result[19]): + deps = result[19].split() + print_info(red("\t Dependencies")) + for dep in deps: + print_info(darkred("\t # Depends on: ")+dep) + #print_info(red("\t Blah: ")+result[20]) --> it's a dup of [21] + if (result[21]): + rundeps = result[21].split() + print_info(red("\t Built with runtime dependencies")) + for rundep in rundeps: + print_info(darkred("\t # Dependency: ")+rundep) + if (result[22]): + print_info(red("\t Conflicts with")) + conflicts = result[22].split() + for conflict in conflicts: + print_info(darkred("\t # Conflict: ")+conflict) + print_info(red("\t Entry API: ")+green(result[23])) + print_info(red("\t Entry revision: ")+str(result[24])) + #print result + print + dbconn.closeDB() ############ diff --git a/libraries/entropyTools.py b/libraries/entropyTools.py index 62ea4b628..4bfa9074a 100644 --- a/libraries/entropyTools.py +++ b/libraries/entropyTools.py @@ -49,6 +49,8 @@ import sys import random import commands +# EXIT STATUSES: 100-199 + def getArchFromChost(chost): # when we'll add new archs, we'll have to add a testcase here if chost.startswith("x86_64"): @@ -154,7 +156,7 @@ def calculateFullAtomsDependencies(atoms, deep = False, extraopts = ""): return deplist, blocklist else: rc = os.system(cmd) - sys.exit(1) + sys.exit(100) def calculateAtomUSEFlags(atom): try: @@ -1642,7 +1644,7 @@ def askquestion(prompt): print "I cannot understand '%s'" % response, except (EOFError, KeyboardInterrupt): print "Interrupted." - sys.exit(1) + sys.exit(100) def print_error(msg): print red(">>")+" "+msg diff --git a/libraries/enzymeTools.py b/libraries/enzymeTools.py index 26dfdeff9..0ae047ca7 100644 --- a/libraries/enzymeTools.py +++ b/libraries/enzymeTools.py @@ -31,7 +31,7 @@ import commands import string -# Stolen from Porthole 0.5.0 - thanks for your help :-) +# EXIT STATUSES: 200-299 def getSyncTime(): """gets and returns the timestamp info saved during @@ -72,7 +72,7 @@ def sync(options): rsync = commands.getoutput("which rsync") if (not rsync.startswith("/")): print_error(red(bold("net-misc/rsync is not installed. Please install."))) - sys.exit(100) + sys.exit(200) for i in myopts: if ( i == "--verbose" ) or ( i == "-v" ): @@ -89,7 +89,7 @@ def sync(options): rc = spawnCommand(vdbPORTDIR+"="+etpConst['portagetreedir']+" "+cdbEMERGE+" --sync ", redirect = syncMiscRedirect) # redirect = "/dev/null" if (rc != 0): print_error(red("an error occoured while syncing the Portage tree. Are you sure that your Internet connection works?")) - sys.exit(101) + sys.exit(201) if (not enzymeNoOverlaySync): # syncing overlays rc = overlay(['overlay','sync']) @@ -128,7 +128,7 @@ def sync(options): rc = spawnCommand("rsync --recursive --links --safe-links --perms --times --force --whole-file --delete --delete-after --exclude=/distfiles --exclude=/packages "+etpConst['portagetreedir']+" "+officialPortageTreeDir, redirect = syncMiscRedirect) if (rc != 0): print_error(red("an error occoured while syncing back the official Portage Tree.")) - sys.exit(101) + sys.exit(201) def build(atoms): @@ -186,7 +186,7 @@ def build(atoms): if validAtoms == []: print_error(red(bold("no valid package names specified."))) - sys.exit(102) + sys.exit(202) # resolve atom name with the best package available _validAtoms = [] @@ -251,7 +251,7 @@ def build(atoms): print_warning(red(" *")+bold(" [CONFL] ")+i) if (not enzymeRequestIgnoreConflicts): print_error(red(" ***")+" Sorry, I can't continue. To force this, add --ignore-conflicts at your own risk.") - sys.exit(1) + sys.exit(101) else: import time print_warning((" ***")+" You are using --ignore-conflicts at your own risk.") @@ -572,7 +572,7 @@ def world(options): print_info(green(" * ")+red("Starting to build binaries...")) else: print_error(red(" * ")+red("No detected packages??? Are you serious?")) - sys.exit(301) + sys.exit(231) localcount = 0 for pkg in installedPackages: @@ -583,7 +583,7 @@ def world(options): if (rc is None): print_warning(red(" * ")+yellow(" quickpkg problem for ")+red(pkg)) # FIXME: remove sys.exit then... - sys.exit(302) + sys.exit(232) writechar("\n") print_info(green(" * ")+red("All packages have been generates successfully")) return 0 @@ -598,7 +598,7 @@ def world(options): if blocklist != []: print blocklist print "error there is something that is blocking all this shit" - sys.exit(303) + sys.exit(233) if (enzymeRequestSkipfirst): deplist = deplist[1:] @@ -772,7 +772,7 @@ def uninstall(options): if validAtoms == []: print_error(red(bold("no valid package names specified."))) - sys.exit(102) + sys.exit(232) if (not enzymeRequestPrune): uninstallText += bold("unmerge ") diff --git a/libraries/reagentTools.py b/libraries/reagentTools.py index 0313685f4..7b75c55e0 100644 --- a/libraries/reagentTools.py +++ b/libraries/reagentTools.py @@ -202,7 +202,7 @@ def extractPkgData(package): print_info(yellow(" * ")+red("Getting package location path..."),back = True) # local path to the file - etpData['packagepath'] = etpConst['packagesbindir']+"/"+pkgname+"-"+pkgver+".tbz2" + etpData['packagepath'] = etpConst['binaryurirelativepath']+"/"+pkgname+"-"+pkgver+".tbz2" print_info(yellow(" * ")+red("Getting package description..."),back = True) # Fill description