]> git.itanic.dy.fi Git - emerge-timer/blob - emerge-timer.py
rewriting
[emerge-timer] / emerge-timer.py
1 #!/usr/bin/python
2
3
4 import sys, subprocess, datetime, os, re
5
6
7 PORTDIR = "/usr/portage/"
8 LOGFILE = "/var/log/emerge.log"
9
10 green_start = "\033[32m"
11 color_stop = "\033[m"
12
13 packages = []
14
15
16 class package:
17     def __init__(self):
18         self.name = ""
19         self.version = ""
20         self.emerge_time = ""
21         self.emerge_date = ""
22
23
24     def printable_time(self):
25         time = self.emerge_time
26
27         days = time/(3600*24)
28         hours = (days - int(days))*24
29         minutes = (hours - int(hours))*60
30         seconds = (minutes - int(minutes))*60
31
32         days = int(days)
33         hours = int(hours)
34         minutes = int(minutes)
35         seconds = int(round(seconds))
36
37         pdays, phours, pminutes, pseconds = str()
38
39         if days > 0:
40             pdays = (green_start + str(days) + color_stop + " day")
41             if days != 1:
42                 pdays += "s"
43
44         if hours > 0:
45             phours = (green_start + str(hours) + color_stop + " hour")
46             if hours != 1:
47                 phours += "s"
48
49         if minutes > 0:
50             pminutes = (green_start + str(minutes) + color_stop + " minute")
51             if minutes != 1:
52                 pminutes += "s"
53
54         pseconds = green_start + str(seconds) + color_stop + " second")
55         if seconds != 1:
56             pseconds += "s"
57
58         return (pdays + phours + pminutes + pdays)
59                      
60
61 def open_log():
62     """Attempt to open the LOGFILE."""
63
64     try:
65         f = open(LOGFILE, 'r')
66     except IOError as detail:
67         print detail
68         sys.exit(1)
69     finally:
70         return f
71
72
73
74 def search_log_for_package(package):
75
76     log = open_log()
77
78     for line in log:
79         if ((">>>" in line) and ("emerge" in line)):
80             if package in line:
81                 time_string = line.partition(">>>")
82                 start_time = float(time_string[0].strip().strip(':'))
83
84         elif ((":::" in line) and ("completed emerge" in line)):
85             if package in line:
86                 time_string = line.partition(":::")
87                 stop_time = float(time_string[0].strip().strip(':'))
88
89                 emerge_time = stop_time - start_time
90
91 #                date = 0 # get date
92
93                 print line
94                 packages.append((package, emerge_time))
95
96 def main(status, package=None):
97
98     if status == "package":
99         search_log_for_package(package)
100         print packages
101
102
103     elif status == "current":
104         pass
105
106     elif status == "pretended":
107         pass
108
109
110
111
112 if __name__ == "__main__":
113
114     if len(sys.argv) == 1:
115         main("current")
116         sys.exit(1)
117
118     elif sys.argv[1] == "-p":
119         main("pretended")
120         sys.exit(1)
121
122     elif len(sys.argv) > 1:
123         main("package", sys.argv[1])
124