]> git.itanic.dy.fi Git - emerge-timer/blob - emerge-timer.py
6982f86ab553991032135bb58958cb5408fd2fe2
[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, name, version='', emerge_time='', emerge_date=''):
18         self.name = name
19         self.version = version
20         self.emerge_time = emerge_time
21         self.emerge_date = emerge_date
22
23
24     def 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 = str()
38         phours = str()
39         pminutes = str()
40         pseconds = str()
41
42         if days > 0:
43             pdays = (green_start + str(days) + color_stop + " day")
44             if days != 1:
45                 pdays += "s"
46
47         if hours > 0:
48             phours = (green_start + str(hours) + color_stop + " hour")
49             if hours != 1:
50                 phours += "s"
51
52         if minutes > 0:
53             pminutes = (green_start + str(minutes) + color_stop + " minute")
54             if minutes != 1:
55                 pminutes += "s"
56
57         pseconds = (green_start + str(seconds) + color_stop + " second")
58         if seconds != 1:
59             pseconds += "s"
60
61         return (pdays + phours + pminutes + pdays)
62
63     def date(self):
64         date = datetime.datetime.fromtimestamp(self.emerge_date)
65
66         year = str(date.year)
67         month = str(date.month)
68         day = str(date.day)
69         hour = str(date.hour)
70         minute = str(date.minute)
71         second = str(date.second)
72
73         date = "{:%d.%m.%Y %H:%M:%S}".format(date)
74
75         return date
76
77
78
79 def open_log():
80     """Attempt to open the LOGFILE."""
81
82     try:
83         f = open(LOGFILE, 'r')
84     except IOError as detail:
85         print detail
86         sys.exit(1)
87     finally:
88         return f
89
90
91
92 def search_log_for_package(user_package):
93
94     log = open_log()
95
96     for line in log:
97         if ((">>>" in line) and ("emerge" in line)):
98             if user_package in line:
99                 version = line.partition(user_package)[2].partition(' ')[0]
100
101                 time_string = line.partition(">>>")
102                 start_time = float(time_string[0].strip().strip(':'))
103
104         elif ((":::" in line) and ("completed emerge" in line)):
105             if user_package in line:
106                 time_string = line.partition(":::")
107                 stop_time = float(time_string[0].strip().strip(':'))
108
109                 emerge_time = stop_time - start_time
110
111
112                 packages.append(package(user_package, version, emerge_time, start_time))
113
114
115 def print_stuff():
116     for p in packages:
117         print(green_start + p.name + p.version + color_stop + "  >>>  " + p.time()
118               + "  >>>  " + p.date())
119
120
121 def main(status, user_package=None):
122
123     if status == "package":
124         search_log_for_package(user_package)
125         print_stuff()
126
127
128     elif status == "current":
129         pass
130
131     elif status == "pretended":
132         pass
133
134
135
136
137 if __name__ == "__main__":
138
139     if len(sys.argv) == 1:
140         main("current")
141         sys.exit(1)
142
143     elif sys.argv[1] == "-p":
144         main("pretended")
145         sys.exit(1)
146
147     elif len(sys.argv) > 1:
148         main("package", sys.argv[1])
149