def BashCommandTask(taskmanager, term_source, task, environment=None): ''' environment - list of tuples (EnvVarName, Value) Launch a task which is effectively a bash script. ''' f = QTemporaryFile() f.setFileTemplate( f.fileTemplate() ) f.open() f.write(term_source) f.flush() f.close() f.setAutoRemove(False) process = QtCore.QProcess() ApplyEnvironment(process, environment) process.readyReadStandardOutput.connect( lambda taskmanager=taskmanager, process=process, task=task : taskmanager.write_process_output(process, False, task) ) process.readyReadStandardError.connect( lambda taskmanager=taskmanager, process=process, task=task : taskmanager.write_process_output(process, False, task) ) process.finished.connect( lambda exitcode, taskmanager=taskmanager, process=process, task=task : taskmanager.finished(exitcode, task, process) ) process.start("bash", [f.fileName()]) return process