#!/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, name, version='', emerge_time='', emerge_date=''): self.name = name self.version = version self.emerge_time = emerge_time self.emerge_date = emerge_date def 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 = str() phours = str() pminutes = str() 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 date(self): date = datetime.datetime.fromtimestamp(self.emerge_date) year = str(date.year) month = str(date.month) day = str(date.day) hour = str(date.hour) minute = str(date.minute) second = str(date.second) date = "{:%d.%m.%Y %H:%M:%S}".format(date) return date 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(user_package): log = open_log() for line in log: if ((">>>" in line) and ("emerge" in line)): if user_package in line: version = line.partition(user_package)[2].partition(' ')[0] time_string = line.partition(">>>") start_time = float(time_string[0].strip().strip(':')) elif ((":::" in line) and ("completed emerge" in line)): if user_package in line: time_string = line.partition(":::") stop_time = float(time_string[0].strip().strip(':')) emerge_time = stop_time - start_time packages.append(package(user_package, version, emerge_time, start_time)) def print_stuff(): for p in packages: print(green_start + p.name + p.version + color_stop + " >>> " + p.time() + " >>> " + p.date()) def main(status, user_package=None): if status == "package": search_log_for_package(user_package) print_stuff() 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])