self.name = name
self.version = version
self.versions = []
+ self.emerge_time = 12*3600
def add_version(self, version, emerge_time, emerge_date):
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" +
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):
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":