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):
22 def add_version(self, version, emerge_time, emerge_date):
24 self.versions.append((version, emerge_time, emerge_date))
27 def print_versions(self):
28 for p in self.versions:
29 print("\t" + self.name + p[0] + " >>> " +
30 self.time(p[1]) + " >>> " +
31 green_start + self.date(p[2]) + color_stop)
37 hours = (days - int(days))*24
38 minutes = (hours - int(hours))*60
39 seconds = (minutes - int(minutes))*60
43 minutes = int(minutes)
44 seconds = int(round(seconds))
52 pdays = (green_start + str(days) + color_stop + " day")
57 phours = (green_start + str(hours) + color_stop + " hour")
62 pminutes = (green_start + str(minutes) + color_stop + " minute")
66 pseconds = (green_start + str(seconds) + color_stop + " second")
70 return (pdays + phours + pminutes + pdays)
73 def date(self, emerge_date):
74 date = datetime.datetime.fromtimestamp(emerge_date)
77 month = str(date.month)
80 minute = str(date.minute)
81 second = str(date.second)
83 date = "{:%d.%m.%Y %H:%M:%S}".format(date)
90 """Attempt to open the LOGFILE."""
93 f = open(LOGFILE, 'r')
94 except IOError as detail:
102 def search_log_for_package(user_package):
106 packages.insert(0, package(user_package))
109 if ((">>>" in line) and ("emerge" in line)):
110 if user_package in line:
111 version = line.partition(user_package)[2].partition(' ')[0]
112 digit = version.strip('-')[0].isdigit()
115 time_string = line.partition(">>>")
116 start_time = float(time_string[0].strip().strip(':'))
118 elif ((":::" in line) and ("completed emerge" in line)):
119 if user_package in line:
121 time_string = line.partition(":::")
122 stop_time = float(time_string[0].strip().strip(':'))
124 emerge_time = stop_time - start_time
126 packages[0].add_version(version, emerge_time, start_time)
136 def main(status, user_package=None):
138 if status == "package":
139 search_log_for_package(user_package)
143 elif status == "current":
146 elif status == "pretended":
152 if __name__ == "__main__":
154 if len(sys.argv) == 1:
158 elif sys.argv[1] == "-p":
162 elif len(sys.argv) > 1:
163 main("package", sys.argv[1])