4 import sys, subprocess, datetime, os, re
7 PORTDIR = "/usr/portage/"
8 LOGFILE = "/var/log/emerge.log"
10 green_start = "\033[32m"
17 def __init__(self, name, version='', emerge_time='', emerge_date=''):
19 self.version = version
20 self.emerge_time = emerge_time
21 self.emerge_date = emerge_date
25 time = self.emerge_time
28 hours = (days - int(days))*24
29 minutes = (hours - int(hours))*60
30 seconds = (minutes - int(minutes))*60
34 minutes = int(minutes)
35 seconds = int(round(seconds))
43 pdays = (green_start + str(days) + color_stop + " day")
48 phours = (green_start + str(hours) + color_stop + " hour")
53 pminutes = (green_start + str(minutes) + color_stop + " minute")
57 pseconds = (green_start + str(seconds) + color_stop + " second")
61 return (pdays + phours + pminutes + pdays)
64 date = datetime.datetime.fromtimestamp(self.emerge_date)
67 month = str(date.month)
70 minute = str(date.minute)
71 second = str(date.second)
73 date = "{:%d.%m.%Y %H:%M:%S}".format(date)
80 """Attempt to open the LOGFILE."""
83 f = open(LOGFILE, 'r')
84 except IOError as detail:
92 def search_log_for_package(user_package):
97 if ((">>>" in line) and ("emerge" in line)):
98 if user_package in line:
99 version = line.partition(user_package)[2].partition(' ')[0]
101 time_string = line.partition(">>>")
102 start_time = float(time_string[0].strip().strip(':'))
104 elif ((":::" in line) and ("completed emerge" in line)):
105 if user_package in line:
106 time_string = line.partition(":::")
107 stop_time = float(time_string[0].strip().strip(':'))
109 emerge_time = stop_time - start_time
112 packages.append(package(user_package, version, emerge_time, start_time))
117 print(green_start + p.name + p.version + color_stop + " >>> " + p.time()
118 + " >>> " + p.date())
121 def main(status, user_package=None):
123 if status == "package":
124 search_log_for_package(user_package)
128 elif status == "current":
131 elif status == "pretended":
137 if __name__ == "__main__":
139 if len(sys.argv) == 1:
143 elif sys.argv[1] == "-p":
147 elif len(sys.argv) > 1:
148 main("package", sys.argv[1])