76 def __init__(self, logger, Command, finish_callback=None, |
76 def __init__(self, logger, Command, finish_callback=None, |
77 no_stdout=False, no_stderr=False, no_gui=True, |
77 no_stdout=False, no_stderr=False, no_gui=True, |
78 timeout=None, outlimit=None, errlimit=None, |
78 timeout=None, outlimit=None, errlimit=None, |
79 endlog=None, keyword=None, kill_it=False, cwd=None, |
79 endlog=None, keyword=None, kill_it=False, cwd=None, |
80 encoding=None, output_encoding=None): |
80 encoding=None, output_encoding=None): |
81 assert(logger) |
|
82 self.logger = logger |
81 self.logger = logger |
83 if not isinstance(Command, list): |
82 if not isinstance(Command, list): |
84 self.Command_str = Command |
83 self.Command_str = Command |
85 self.Command = [] |
84 self.Command = [] |
86 for i, word in enumerate(Command.replace("'", '"').split('"')): |
85 for i, word in enumerate(Command.replace("'", '"').split('"')): |
158 def output(self, v): |
157 def output(self, v): |
159 if v and self.output_encoding: |
158 if v and self.output_encoding: |
160 v = v.decode(self.output_encoding) |
159 v = v.decode(self.output_encoding) |
161 self.outdata.append(v) |
160 self.outdata.append(v) |
162 self.outlen += 1 |
161 self.outlen += 1 |
163 if not self.no_stdout: |
162 if self.logger and not self.no_stdout: |
164 self.logger.write(v) |
163 self.logger.write(v) |
165 if (self.keyword and v.find(self.keyword) != -1) or (self.outlimit and self.outlen > self.outlimit): |
164 if (self.keyword and v.find(self.keyword) != -1) or (self.outlimit and self.outlen > self.outlimit): |
166 self.endlog() |
165 self.endlog() |
167 |
166 |
168 def errors(self, v): |
167 def errors(self, v): |
169 if v and self.output_encoding: |
168 if v and self.output_encoding: |
170 v = v.decode(self.output_encoding) |
169 v = v.decode(self.output_encoding) |
171 self.errdata.append(v) |
170 self.errdata.append(v) |
172 self.errlen += 1 |
171 self.errlen += 1 |
173 if not self.no_stderr: |
172 if self.logger and not self.no_stderr: |
174 self.logger.write_warning(v) |
173 self.logger.write_warning(v) |
175 if self.errlimit and self.errlen > self.errlimit: |
174 if self.errlimit and self.errlen > self.errlimit: |
176 self.endlog() |
175 self.endlog() |
177 |
176 |
178 def log_the_end(self, ecode, pid): |
177 def log_the_end(self, ecode, pid): |