|
3 | 3 | import sys |
4 | 4 | from os import path |
5 | 5 | from datetime import datetime, timedelta, date |
| 6 | +from gettext import translation |
6 | 7 | from humanize import filesize |
| 8 | +from pkg_resources import resource_filename |
7 | 9 | from psutil import swap_memory, process_iter |
8 | 10 | from time import sleep |
| 11 | +from swapping_ebuilds.__init__ import __version__, __versiondate__ |
9 | 12 |
|
10 | | -__version__="0.1.0.dev" |
11 | | -__versiondatetime__=datetime(2020,12,13,17,44) |
12 | | -__versiondate__=__versiondatetime__.date() |
| 13 | +try: |
| 14 | + t=translation('swapping_ebuilds', resource_filename("swapping_ebuilds","locale")) |
| 15 | + _=t.gettext |
| 16 | +except: |
| 17 | + _=str |
13 | 18 |
|
14 | 19 |
|
15 | 20 | class SetPackages: |
@@ -43,7 +48,7 @@ def read_file(self): |
43 | 48 |
|
44 | 49 | def print(self): |
45 | 50 | for p in self.arr: |
46 | | - print ("{} ({}) [{}] has {} reports ({} per hour) with {} of swap average".format(p.datetime(), p.duration(),p.name(),p.num_reports(), int(p.reports_per_hour()),filesize.naturalsize(int(p.average_swap())))) |
| 51 | + print (_("{} ({}) [{}] has {} reports ({} per hour) with {} of swap average").format(p.datetime(), p.duration(),p.name(),p.num_reports(), int(p.reports_per_hour()),filesize.naturalsize(int(p.average_swap())))) |
47 | 52 |
|
48 | 53 |
|
49 | 54 | class Package: |
@@ -94,53 +99,55 @@ def init__from_line(self,line): |
94 | 99 | self.swap=int(line.split(" [")[1].split("] ")[1]) |
95 | 100 | return self |
96 | 101 | except: |
97 | | - print("Problem parsing: {}".format(line)) |
| 102 | + print(_(f"Problem parsing: {line}")) |
98 | 103 | return None |
99 | 104 |
|
100 | 105 | def __repr__(self): |
101 | 106 | return "{} {} {}".format(self.datetime,self.name,self.swap) |
102 | 107 | #################################################################################################### |
103 | 108 |
|
104 | | -description="This app logs in /var/lib/swapping_ebuilds.txt when compiling gentoo packages and swap is over an amount of MB. This allow you to change in package.env the number of processors used, to decrease swapping and improve ebuild time compilation" |
105 | | -epilog="Developed by Mariano Muñoz 2017-{}".format(__versiondate__.year) |
106 | | -parser=argparse.ArgumentParser(description=description,epilog=epilog) |
107 | | -parser.add_argument('--version',action='version', version=__version__) |
108 | | -group1=parser.add_mutually_exclusive_group(required=True) |
109 | | -group1.add_argument('--analyze', help='Analyze log', action='store_true', default=False) |
110 | | -group1.add_argument('--get', help='Generate log', action='store_true',default=False) |
111 | | -parser.add_argument('--megabytes', help='Minimum megabytes swap amount to be logged. Default is 500MB', action='store', default=500,metavar="MB") |
112 | | -args=parser.parse_args() |
113 | | - |
114 | | -try: |
115 | | - args.megabytes=int(args.megabytes) |
116 | | -except: |
117 | | - print("Please add a int to the megabytes argument") |
118 | | - sys.exit(0) |
119 | 109 |
|
120 | | -filename="/var/lib/swapping_ebuilds.txt" |
121 | | - |
122 | | -if args.get: |
123 | | - while True: |
124 | | - package="" |
125 | | - try: |
126 | | - for proc in process_iter(): |
127 | | - for word in proc.cmdline(): |
128 | | - if word.endswith("] sandbox"): |
129 | | - package=word.replace(" sandbox","") |
130 | | - except: |
131 | | - pass |
132 | | - |
133 | | - used=swap_memory().used |
134 | | - if used>args.megabytes*1024*1024: |
135 | | - f=open(filename,"a") |
136 | | - f.write(f"{datetime.now()} {package} {used}\n") |
137 | | - f.close() |
138 | | - print (f"{datetime.now()} {package} {filesize.naturalsize(used)} Logging...") |
139 | | - sleep(60) |
140 | | - |
141 | | -if args.analyze: |
142 | | - if path.exists(filename)==False: |
143 | | - print("No swapping detected") |
| 110 | +def main(): |
| 111 | + description=_("This app logs in /var/lib/swapping_ebuilds.txt when compiling gentoo packages and swap is over an amount of MB. This allow you to change in package.env the number of processors used, to decrease swapping and improve ebuild time compilation") |
| 112 | + epilog=_("Developed by Mariano Muñoz 2017-{}").format(__versiondate__.year) |
| 113 | + parser=argparse.ArgumentParser(description=description,epilog=epilog) |
| 114 | + parser.add_argument('--version',action='version', version=__version__) |
| 115 | + group1=parser.add_mutually_exclusive_group(required=True) |
| 116 | + group1.add_argument('--analyze', help=_('Analyze log'), action='store_true', default=False) |
| 117 | + group1.add_argument('--get', help=_('Generate log'), action='store_true',default=False) |
| 118 | + parser.add_argument('--megabytes', help=_('Minimum megabytes swap amount to be logged. Default is 500MB'), action='store', default=500,metavar="MB") |
| 119 | + args=parser.parse_args() |
| 120 | + |
| 121 | + try: |
| 122 | + args.megabytes=int(args.megabytes) |
| 123 | + except: |
| 124 | + print(_("Please add a int to the megabytes argument")) |
144 | 125 | sys.exit(0) |
145 | | - set=SetPackages() |
146 | | - set.print() |
| 126 | + |
| 127 | + filename="/var/lib/swapping_ebuilds.txt" |
| 128 | + |
| 129 | + if args.get: |
| 130 | + while True: |
| 131 | + package="" |
| 132 | + try: |
| 133 | + for proc in process_iter(): |
| 134 | + for word in proc.cmdline(): |
| 135 | + if word.endswith("] sandbox"): |
| 136 | + package=word.replace(" sandbox","") |
| 137 | + except: |
| 138 | + pass |
| 139 | + |
| 140 | + used=swap_memory().used |
| 141 | + if used>args.megabytes*1024*1024: |
| 142 | + f=open(filename,"a") |
| 143 | + f.write(f"{datetime.now()} {package} {used}\n") |
| 144 | + f.close() |
| 145 | + print (f"{datetime.now()} {package} {filesize.naturalsize(used)} Logging...") |
| 146 | + sleep(60) |
| 147 | + |
| 148 | + if args.analyze: |
| 149 | + if path.exists(filename)==False: |
| 150 | + print(_("No swapping detected")) |
| 151 | + sys.exit(0) |
| 152 | + set=SetPackages() |
| 153 | + set.print() |
0 commit comments