From bc73e4a224f2d634eb34990de81d0152157d6ddb Mon Sep 17 00:00:00 2001 From: Esko Kokkonen Date: Sat, 10 Sep 2011 13:48:44 +0300 Subject: [PATCH] Add current emerge time feature --- emerge-timer.py | 65 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/emerge-timer.py b/emerge-timer.py index 5c8fd89..31aae32 100755 --- a/emerge-timer.py +++ b/emerge-timer.py @@ -18,6 +18,7 @@ class package: self.name = name self.version = version self.versions = [] + self.emerge_time = 12*3600 def add_version(self, version, emerge_time, emerge_date): @@ -53,6 +54,18 @@ class package: return self.versions[0][1] + def print_current_emerge(self): + + print("\t" + green_start + self.name + '-' + self.version + + color_stop + "\n\t current time: " + self.time(self.emerge_time) + + "\n\t average time: " + self.time(self.average_time())), + + finish_time = self.average_time() - self.emerge_time + + print("\n\t " + '-'*45 + + "\n\t time to finish: " + self.time(finish_time)) + + def print_versions(self): for p in self.versions: print('-'*90 + "\n" + @@ -238,6 +251,50 @@ def list_pretended(): packages.append(package(package_name, version)) +def list_emerge_processes(): + """Look for the ebuild process with ps. If the process is found parse + the command for the package. With this package search the LOGFILE for + the emerge startup time.""" + + f = open_log() + + now = datetime.datetime.today() + + for i in os.popen("ps ax"): + if (("ebuild.sh" in i) and ("/bin/bash" not in i)): + pack = i.partition('[')[2].partition(']')[0] + + version = pack.partition('/')[2].partition('-')[2] + + while not version[0].isdigit(): + version = version.partition('-')[2] + + package_name = pack[:-len(version)-1] + + packages.append(package(package_name, version)) + + + if len(packages) == 0: + print "No current emerge process found." + return + + + for line in f: + if ((">>>" in line) and ("emerge" in line)): + for p in packages: + if (p.name + '-' + p.version in line): + + time = float(line.partition(' ')[0].strip(":")) + + timestamp = datetime.datetime.fromtimestamp(time) + difference = (now - timestamp).total_seconds() + + if difference < p.emerge_time: + p.emerge_time = difference + + + + def main(status, user_package=None): @@ -252,7 +309,13 @@ def main(status, user_package=None): elif status == "current": - pass + list_emerge_processes() + + print "Currently emerging:" + + for p in packages: + search_log_for_package(p) + p.print_current_emerge() elif status == "pretended": -- 2.44.0