]> git.itanic.dy.fi Git - emerge-timer/blobdiff - emerge-timer.py
Fix correct newline behaviour in python3
[emerge-timer] / emerge-timer.py
index cc4d242667ca570e0102d2b298c47c7cc14f07ee..d782b34996fac6c9b6c791a58a069adace19de77 100755 (executable)
@@ -38,6 +38,19 @@ class package:
         self.versions.append((version, emerge_time, emerge_date))
 
 
+    def seek_versions(self, whatToSeek, Input):
+
+        if whatToSeek == "date":
+            for i in self.versions:
+                if i[1] == Input:
+                    return i[2]
+
+        if whatToSeek == "version":
+            for i in self.versions:
+                if i[1] == Input:
+                    return i[0]
+
+
     def average_time(self):
         """Return average time from class version list"""
         total_time = 0
@@ -58,8 +71,8 @@ class package:
         return total_time
 
 
-    def max_time(self):
-        """Return maximum time from class version list"""
+    def min_max_time(self, setting):
+        """Return maximum or minimum time from class version list"""
 
         emerge_times = []
         for i in self.versions:
@@ -67,19 +80,11 @@ class package:
 
         emerge_times.sort()
 
-        return emerge_times[-1]
-
-
-    def min_time(self):
-        """Return minimum time from class version list"""
-
-        emerge_times = []
-        for i in self.versions:
-            emerge_times.append(i[1])
-
-        emerge_times.sort()
+        if setting == "max":
+            return emerge_times[-1]
+        elif setting == "min":
+            return emerge_times[0]
 
-        return emerge_times[0]
 
 
 
@@ -92,26 +97,26 @@ class package:
 
         if len(self.versions) == 1:
             print("\t last time:   "),
-            print(give_time(self.average_time())),
+            print(give_time(self.average_time()), end='')
 
         elif len(self.versions) > 1:
-            print("\t average time:"),
-            print(give_time(self.average_time())),
+            print("\t average time: ", end='')
+            print(give_time(self.average_time()), end='')
 
         else:
             print("\t average time: " + GREEN("unknown\n")),
             return
 
-        print("\n\t " + '-'*45),
+        print("\n\t " + '-'*45, end='')
 
-        print("\n\t time to finish:"),
+        print("\n\t time to finish: ", end='')
 
         if type(self.emerge_time) != str:
 
             finish_time = self.average_time() - self.emerge_time
 
             if finish_time > 0:
-                print(give_time(finish_time))
+                print(give_time(finish_time), "\n")
             else:
                 print(GREEN("any time now"))
         else:
@@ -188,16 +193,33 @@ class package:
         if len(self.versions) == 1:
             return
 
-        maxi = self.max_time()
-        mini = self.min_time()
+        maxi = self.min_max_time("max")
+        mini = self.min_max_time("min")
         average = self.average_time()
         total = self.total_time()
 
-        print("Max time:\t" + give_time(maxi) +
-              "\nMin time:\t" + give_time(mini) +
-              "\nAverage time:\t" + give_time(average) +
-              "\nIn total spent:\t" + give_time(total) +
-              "emerging " + GREEN(self.name))
+        print("-"*20 +
+              "\nMaximum emerge time:\n" +
+              give_time(maxi) + "for version " +
+              GREEN(self.seek_versions("version", maxi).lstrip("-"))
+              + " on " +
+              give_date(self.seek_versions("date", maxi)))
+
+        print("-"*20 +
+              "\nMinimum emerge time:\n" +
+              give_time(mini) + "for version " +
+              GREEN(self.seek_versions("version", mini).lstrip("-"))
+              + " on " +
+              give_date(self.seek_versions("date", mini)))
+
+        print("-"*20 +
+              "\nAverage emerge time:\n" +
+              give_time(average))
+
+        print("-"*20 +
+              "\nIn total spent:\n" +
+              give_time(total))
+
 
     def plotToScreen(self):
         dates = []
@@ -293,7 +315,7 @@ def open_log():
     try:
         f = open(LOGFILE, 'r')
     except IOError as detail:
-        print detail
+        print(detail)
         sys.exit(1)
 
     return f
@@ -350,15 +372,13 @@ def search_log_for_all_packages():
         elif ((":::" in line) and ("completed emerge" in line)):
             for p in all_packages:
                 if p[0] in line:
-                    stop_time = float(line.partition(':')[0])
-
                     print("\t" + give_date(p[1]) + " >>> " + GREEN(p[0]))
 
-                    total_emerge_time += stop_time - p[1]
                     emerge_number += 1
 
                     all_packages.pop(all_packages.index(p))
 
+
     print("\n" + GREEN(str(emerge_number)) + " emerges in total found.")
 
 
@@ -458,7 +478,7 @@ def list_emerge_processes():
 
 
     if len(PACKAGES) == 0:
-        print "No current emerge process found."
+        print("No current emerge process found.")
 
         return 1
 
@@ -475,8 +495,8 @@ def list_emerge_processes():
                     timestamp = datetime.datetime.fromtimestamp(time)
                     difference = (now - timestamp).total_seconds()
 
-                    if ((difference < p.emerge_time) or
-                        (p.emerge_time == "infinity")):
+                    if ((p.emerge_time == "infinity") or
+                        (difference < p.emerge_time)):
 
                         p.emerge_time = difference
 
@@ -486,10 +506,11 @@ def list_emerge_processes():
 def search_syncs():
     f = open_log()
 
-    print "These emerge syncs found"
-    print "\tDate                    Server"
-    print "\t------------------------------"
+    print("These emerge syncs found")
+    print("\tDate                    Server")
+    print("\t------------------------------")
 
+    a = 0
     for line in f:
         if "=== Sync completed with" in line:
             time = float(line.partition(' ')[0].strip(":"))
@@ -497,7 +518,9 @@ def search_syncs():
 
             print("\t" + GREEN(give_date(time)) +
                   " === " + server),
+            a += 1
 
+    print("\n" + GREEN(str(a)) + " emerge syncs found. ")
 
 
 def main(status, user_package=None):
@@ -508,7 +531,7 @@ def main(status, user_package=None):
 
 
 def _main(status, user_package=None):
-    """Main function. Hanlde all the different modes of operation."""
+    """Main function. Handle all the different modes of operation."""
 
     if status == "package":
         for p in user_package:
@@ -544,7 +567,7 @@ def _main(status, user_package=None):
         if list_emerge_processes():
             return
 
-        print "Currently emerging:"
+        print("Currently emerging:")
 
         for p in PACKAGES:
             search_log_for_package(p)
@@ -554,7 +577,7 @@ def _main(status, user_package=None):
     elif status == "pretended":
         list_pretended()
 
-        print "This is how long these packages would take to emerge"
+        print("This is how long these packages would take to emerge")
 
         total_pretended_time = 0
 
@@ -583,10 +606,10 @@ Options:
 \t-q, --quiet \t Be less verbose
 \t--no-color \t Use colorless output
 \t--plot \t\t Plot emerge times into a 2D scatter plot
-\t\t\t (needs matlibplot installed for this to work)
-\t--simulate \t Do a simulation run"""
+\t\t\t (needs matlibplot installed for this to work)"""
 
-    print usage
+
+    print(usage)
 
     sys.exit(0)
 
@@ -647,53 +670,4 @@ if __name__ == "__main__":
     else:
         usage()
 
-    if simulation == True:
-
-        print(RED("\n" + '*'*25 + "\n" + "THIS IS A SIMULATION RUN\n"
-              + '*'*25 + "\n"))
-
-        print(RED("Beginning 'package' mode check"))
-
-        print(RED("Checking for one emerge\n"))
-
-        LOGFILE = "simulate/fake_emerge.log"
-        PORTDIR = "simulate/"
-
-        main("package", "first_fake_package")
-
-        print(RED("\nChecking for three emerges\n"))
-
-        main("package", "second_fake_package")
-
-        print(RED("\n'package' mode check complete\n"))
-
-        print(RED(30*'*'))
-
-        print(RED("\nBeginning 'current' mode check"))
-        print(RED("Current emerge with no emerge process\n"))
-
-        main("current", None)
-
-        print(RED("\nCurrent emerge with emerge processes\n"))
-
-        PACKAGES.append(package("test-group/second_fake_package", "2.9-r2"))
-        PACKAGES[0].emerge_time = 60
-        PACKAGES.append(package("test-group/first_fake_package", "1.10.2-r1"))
-        PACKAGES[1].emerge_time = 120
-
-        main("current", None)
-
-        print(RED("\nCurrent emerge with incomplete emerge log " + 
-                  "(causes error in some cases)\n"))
-
-        PACKAGES = []
-        PACKAGES.append(package("test-group/third_fake_package", "2.9-r2"))
-
-        main("current", None)
-
-        print(RED("\n" + '*'*20 + "\n" + "SIMULATION FINISHED\n" +
-              '*'*20))
-
-
-    else:
-        main(mode, input_packages)
+    main(mode, input_packages)