#include "update_command.h" #include "worker.h" #include #include UpdateCommand::UpdateCommand(QString const &command, Worker *worker, int nextCommandIndex, int start_timeout, int finish_timeout) : Command(command, start_timeout, finish_timeout) , m_nextCommandIndex(nextCommandIndex) { setWorker(worker); } bool UpdateCommand::stopUpdateOnFailure() { return true; } void UpdateCommand::finished(int exitCode, QProcess::ExitStatus exitStatus) { qCritical() << __func__ << ":" << __LINE__ << m_command << "exitCode" << exitCode << "exitStatus" << exitStatus; QProcess *p = qobject_cast(sender()); if (p) { // read all remaining data sent to the process, just in case QString s = p->readAllStandardOutput().trimmed(); if (!s.isEmpty()) { qCritical() << __func__ << ":" << __LINE__ << s; m_commandResult += s; } qCritical() << __func__ << ":" << __LINE__ << "next command" << m_nextCommandIndex; disconnect(p, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(readyReadStandardOutput())); disconnect(p, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(readyReadStandardError())); disconnect(p, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(finished(int,QProcess::ExitStatus))); } if (!m_worker->workList().empty()) { if (exitCode == 0 && exitStatus == QProcess::ExitStatus::NormalExit) { qCritical() << __func__ << ":" << __LINE__; if (m_worker->workList().nextExec()) { m_worker->workList().exec(); } } else { qCritical() << __func__ << ":" << __LINE__; bool execShowStatus = true; m_worker->workList().exec(execShowStatus); } } }