#!/usr/bin/python import sys, subprocess, datetime, os, re PORTDIR = "/usr/portage/" LOGFILE = "/var/log/emerge.log" green_start = "\033[32m" color_stop = "\033[m" packages = [] class package: def __init__(self): self.name = "" self.version = "" self.emerge_time = "" self.emerge_date = "" def printable_time(self): time = self.emerge_time days = time/(3600*24) hours = (days - int(days))*24 minutes = (hours - int(hours))*60 seconds = (minutes - int(minutes))*60 days = int(days) hours = int(hours) minutes = int(minutes) seconds = int(round(seconds)) pdays, phours, pminutes, pseconds = str() if days > 0: pdays = (green_start + str(days) + color_stop + " day") if days != 1: pdays += "s" if hours > 0: phours = (green_start + str(hours) + color_stop + " hour") if hours != 1: phours += "s" if minutes > 0: pminutes = (green_start + str(minutes) + color_stop + " minute") if minutes != 1: pminutes += "s" pseconds = green_start + str(seconds) + color_stop + " second") if seconds != 1: pseconds += "s" return (pdays + phours + pminutes + pdays) def open_log(): """Attempt to open the LOGFILE.""" try: f = open(LOGFILE, 'r') except IOError as detail: print detail sys.exit(1) finally: return f def search_log_for_package(package): log = open_log() for line in log: if ((">>>" in line) and ("emerge" in line)): if package in line: time_string = line.partition(">>>") start_time = float(time_string[0].strip().strip(':')) elif ((":::" in line) and ("completed emerge" in line)): if package in line: time_string = line.partition(":::") stop_time = float(time_string[0].strip().strip(':')) emerge_time = stop_time - start_time # date = 0 # get date print line packages.append((package, emerge_time)) def main(status, package=None): if status == "package": search_log_for_package(package) print packages elif status == "current": pass elif status == "pretended": pass if __name__ == "__main__": if len(sys.argv) == 1: main("current") sys.exit(1) elif sys.argv[1] == "-p": main("pretended") sys.exit(1) elif len(sys.argv) > 1: main("package", sys.argv[1])