#!/usr/bin/env python __name__ = "ehush" __version__ = "0.4" __author__ = "Rob Cakebread" __email__ = "pythonhead@gentoo.org" __license__ = "GPL-2" import sys, string, os, popen2 logFile = "/var/log/ehush.txt" usage =""" ehush: please tell me what to do. Usage: ehush [ options ] [ action ] [ ebuildfile | tbz2file | dependency ] [ ... ] ehush [ options ] [ action ] < system | world > ehush < sync | info > ehush --resume [--pretend | --skipfirst] ehush help [ system | config | sync ] Options: -[bcCdDefhikKlnoOpPsSuUvV] [--oneshot] [--noconfmem] [--columns] [--nospinner] Actions: [ clean | depclean | inject | prune | regen | search | unmerge ] for more help try 'emerge --help' or consult the man page.""" n = sys.argv[1:] if n: cmd = string.join(n) else: print usage sys.exit(1) f = open(logFile, 'w') reset = "\x1b[0m" #Add "---", "<<<", for more output goodStuff = [reset, ">>>", "!!!", "\x1b[01m", \ "\x1b[36;06m", "\x1b[36;01m", "\x1b[35;01m", "\x1b[35;06m" \ "\x1b[34;01m", "\x1b[34;06m", "\x1b[32;01m", "\x1b[32;06m" \ "\x1b[33;01m", "\x1b[33;06m", "\x1b[31;01m", "\x1b[31;06m" ] spinner="\|/-\|/-" spinpos=0 def update_spinner(): global spinner, spinpos sys.stdout.write("\b"+spinner[spinpos]+"\b") spinpos=(spinpos+1)%8 nbrLines = 0 def WriteText(text): global nbrLines for s in goodStuff: if string.find(text, s) != -1: print text nbrLines += 1 break else: update_spinner() myCmd = "/usr/bin/emerge %s" % cmd p = popen2.Popen4(myCmd , 1) inp = p.fromchild pid = p.pid try: l = inp.readline() except KeyboardInterrupt: os.kill(pid, 2) sys.exit(1) while l: f.write(l) if l[-1:] == '\n': l = l[:-1] WriteText(l) try: l = inp.readline() except KeyboardInterrupt: os.kill(pid, 2) sys.exit(1) f.close() e = p.poll() if e: if nbrLines > 25: os.system("/usr/bin/tail -25 %s" % logFile) else: if nbrLines < 25: os.system("/usr/bin/tail -25 %s" % logFile) print "Emerge finished without error." print "Full ouput was logged in %s" % logFile