1- #!/usr/bin/python3
2- import getopt
3- import sys
41import psutil
5- import threading
62import time
73from task import Task
84from process import Process
95from json_tool import JsonReaderWriter
10- from setting import Setting
116
127
138class ProcessTracker :
@@ -16,8 +11,7 @@ def __init__(self, settings):
1611 self .json_reader_writer = JsonReaderWriter (self .filename )
1712 self .running = False
1813 self .process_object_list = []
19- self .processes_to_track = settings .get_processes_to_track ()
20- self .excluded_processes = settings .get_excluded_processes ()
14+ self .settings = settings
2115
2216 def is_name_already_in_process_list (self , process_name ):
2317 is_contained = False
@@ -29,15 +23,15 @@ def is_name_already_in_process_list(self, process_name):
2923 def user_include_filter_processes (self , return_process_list ):
3024 filtered_list = []
3125 for process in return_process_list :
32- for u_process in self .processes_to_track :
26+ for u_process in self .settings . get_processes_to_track () :
3327 if process == u_process :
3428 filtered_list .append (process )
3529 return filtered_list
3630
3731 def user_exclude_filter_processes (self , return_process_list ):
38- filtered_list = return_process_list
32+ filtered_list = return_process_list . copy ()
3933 for process in return_process_list :
40- for u_process in self .excluded_processes :
34+ for u_process in self .settings . get_excluded_processes () :
4135 if process == u_process :
4236 filtered_list .remove (process )
4337 return filtered_list
@@ -51,9 +45,9 @@ def get_process_list_without_doubles(self):
5145 return_process_list .append (process .name ())
5246
5347 """excluded processes are priority"""
54- if len (self .excluded_processes ) > 0 :
48+ if len (self .settings . get_excluded_processes () ) > 0 :
5549 return self .user_exclude_filter_processes (return_process_list )
56- elif len (self .processes_to_track ) > 0 :
50+ elif len (self .settings . get_processes_to_track () ) > 0 :
5751 """filters out processes, which the user doesn't want to see"""
5852 return self .user_include_filter_processes (return_process_list )
5953 else :
@@ -137,66 +131,3 @@ def write_process_list(self):
137131 self .json_reader_writer .write_process_list_to_file (self .process_object_list )
138132
139133
140- def show_help ():
141- print ("\n " )
142- print ("--------USAGE--------" )
143- print ("-h --help : prints this help page" )
144- print ("-l <arg> --load <arg> : load settings file from <arg>" )
145- print ("-o <arg> --output <arg> : specify output filename" )
146- print ("-i 'arg1 arg2 arg3' ... --include 'arg1 arg2 arg3' ... : set processes that should be tracked" )
147- print ("-e 'arg1 arg2 arg3' ... --exclude 'arg1 arg2 arg3' ... : set processes that shouldn't be tracked" )
148- print ("---------------------" )
149- print ("\n " )
150- sys .exit (0 )
151-
152-
153- def main ():
154- settings = Setting ()
155- try :
156- opts , args = getopt .getopt (sys .argv [1 :], "hl:o:i:e:b:" ,
157- ["help" , "load=" , "output=" , "included=" , "excluded=" , "build=" ])
158- except getopt .GetoptError as err :
159- # print help information and exit:
160- print (err ) # will print something like "option -a not recognized"
161- sys .exit (2 )
162-
163- for o , a in opts :
164- if o in ("-h" , "--help" ):
165- show_help ()
166- elif o in ("-l" , "--load" ):
167- try :
168- settings .load_from_file ("settings/" + a )
169- print (a )
170- except :
171- print ("settings file not found" )
172- exit (1 )
173- elif o in ("-o" , "--output" ):
174- settings .set_log_filename (a )
175- elif o in ("-i" , "--included" ):
176- processes_to_track = a .split (' ' )
177- settings .set_processes_to_track (processes_to_track )
178- elif o in ("-e" , "--excluded" ):
179- excluded_processes = a .split (' ' )
180- settings .set_excluded_processes (excluded_processes )
181- elif o in ("-b" , "--build" ):
182- excluded_processes = a .split (' ' )
183- settings .set_excluded_processes (excluded_processes )
184- else :
185- assert False , "unhandled option"
186-
187- print ("time_delay=" + str (settings .get_time_delay ()))
188- process_tracker = ProcessTracker (settings )
189- thread = threading .Thread (target = process_tracker .start_logging , args = (settings .get_time_delay (), ))
190- """thread dies, if main dies"""
191- thread .setDaemon (True )
192- thread .start ()
193- time .sleep (2 )
194- print ("------------------------------" )
195- input ("Press return to stop logging\n ------------------------------\n " )
196- process_tracker .stop_logging ()
197- """wait for thread to finish"""
198- thread .join ()
199- process_tracker .write_process_list ()
200-
201- if __name__ == '__main__' :
202- main ()
0 commit comments