adding commnds to execute

This commit is contained in:
Gerhard Hoffmann 2025-02-05 16:25:01 +01:00
parent b6f0615e9c
commit 7b4bee524f
20 changed files with 262 additions and 3 deletions

View File

@ -0,0 +1,6 @@
#include "process/check_and_fetch_customer_repository_command.h"
CheckAndFetchCustomerRepositoryCommand::CheckAndFetchCustomerRepositoryCommand(
QString const &command, Worker *worker, int start_timeout, int finish_timeout)
: UpdateCommand(command, worker, start_timeout, finish_timeout) {
}

View File

@ -0,0 +1,14 @@
#ifndef CHECK_AND_FETCH_CUSTOMER_REPOSITORY_COMMAND_H_INCLUDED
#define CHECK_AND_FETCH_CUSTOMER_REPOSITORY_COMMAND_H_INCLUDED
#include "update_command.h"
class CheckAndFetchCustomerRepositoryCommand : public UpdateCommand {
public:
explicit CheckAndFetchCustomerRepositoryCommand(QString const &command,
Worker *worker,
int start_timeout = 100000,
int finish_timeout = 100000);
};
#endif // CHECK_AND_FETCH_CUSTOMER_REPOSITORY_COMMAND_H_INCLUDED

View File

@ -0,0 +1,9 @@
#include "process/check_ismas_connectivity_command.h"
CheckIsmasConnectivityCommand::CheckIsmasConnectivityCommand(QString const &command,
Worker *worker,
int start_timeout,
int finish_timeout)
: UpdateCommand(command, worker, start_timeout, finish_timeout) {
}

View File

@ -0,0 +1,14 @@
#ifndef CHECK_ISMAS_CONNECTIVITY_COMMAND_H_INCLUDED
#define CHECK_ISMAS_CONNECTIVITY_COMMAND_H_INCLUDED
#include "update_command.h"
class CheckIsmasConnectivityCommand : public UpdateCommand {
public:
explicit CheckIsmasConnectivityCommand(QString const &command,
Worker *worker,
int start_timeout = 100000,
int finish_timeout = 100000);
};
#endif // CHECK_ISMAS_CONNECTIVITY_COMMAND_H_INCLUDED

View File

@ -0,0 +1,9 @@
#include "process/check_update_activation_command.h"
CheckUpdateActivationCommand::CheckUpdateActivationCommand(QString const &command,
Worker *worker,
int start_timeout,
int finish_timeout)
: UpdateCommand(command, worker, start_timeout, finish_timeout) {
}

View File

@ -0,0 +1,14 @@
#ifndef CHECK_UPDATE_ACTIVATION_COMMAND_H_INCLUDED
#define CHECK_UPDATE_ACTIVATION_COMMAND_H_INCLUDED
#include "update_command.h"
class CheckUpdateActivationCommand : public UpdateCommand {
public:
explicit CheckUpdateActivationCommand(QString const &command,
Worker *worker,
int start_timeout = 100000,
int finish_timeout = 100000);
};
#endif // CHECK_UPDATE_ACTIVATION_COMMAND_H_INCLUDED

View File

@ -92,6 +92,7 @@ void Command::readyReadStandardError() {
} }
} }
// TODO: nach UpdateCommands ziehen
void Command::finished(int /*exitCode*/, QProcess::ExitStatus /*exitStatus*/) { void Command::finished(int /*exitCode*/, QProcess::ExitStatus /*exitStatus*/) {
QProcess *p = (QProcess *)sender(); QProcess *p = (QProcess *)sender();
// read all remaining data sent to the process, just in case // read all remaining data sent to the process, just in case
@ -109,6 +110,7 @@ void Command::finished(int /*exitCode*/, QProcess::ExitStatus /*exitStatus*/) {
} }
} }
// TODO: nach UpdateCommand ziehen
bool Command::start(QString workingDirectory, QStringList args) { bool Command::start(QString workingDirectory, QStringList args) {
if (!QDir::setCurrent(workingDirectory)) { if (!QDir::setCurrent(workingDirectory)) {
qCritical() << "SET WORKING_DIRECTORY" << workingDirectory qCritical() << "SET WORKING_DIRECTORY" << workingDirectory

View File

@ -1,6 +1,5 @@
#ifndef COMMAND_H_INCLUDED #ifndef COMMAND_H_INCLUDED
#define COMMAND_H_INCLUDED #define COMMAND_H_INCLUDED
#endif // COMMAND_H_INCLUDED
#include <QObject> #include <QObject>
#include <QCoreApplication> #include <QCoreApplication>
@ -13,14 +12,24 @@ class Worker;
class Command : public QObject { class Command : public QObject {
Q_OBJECT Q_OBJECT
protected:
QString m_command; QString m_command;
mutable QString m_commandResult; mutable QString m_commandResult;
private:
int m_waitForStartTimeout; int m_waitForStartTimeout;
int m_waitForFinishTimeout; int m_waitForFinishTimeout;
int m_exitCode; int m_exitCode;
protected:
mutable QMutex m_mtx; mutable QMutex m_mtx;
private:
QProcess *m_p; QProcess *m_p;
protected:
Worker *m_worker; Worker *m_worker;
public: public:
explicit Command(QString const &command, explicit Command(QString const &command,
int start_timeout = 100000, int start_timeout = 100000,
@ -35,8 +44,10 @@ public:
void setWorker(Worker *worker) {m_worker = worker; } void setWorker(Worker *worker) {m_worker = worker; }
private slots: protected slots:
void readyReadStandardOutput(); void readyReadStandardOutput();
void readyReadStandardError(); void readyReadStandardError();
void finished(int exitCode, QProcess::ExitStatus exitStatus); virtual void finished(int exitCode, QProcess::ExitStatus exitStatus);
}; };
#endif // COMMAND_H_INCLUDED

View File

@ -0,0 +1,10 @@
#include "process/exec_opkg_command.h"
ExecOpkgCommand::ExecOpkgCommand(QString const &command,
Worker *worker,
int start_timeout,
int finish_timeout)
: UpdateCommand(command, worker, start_timeout, finish_timeout)
, m_noaction(m_noaction) {
}

View File

@ -0,0 +1,17 @@
#ifndef EXEC_OPKG_COMMAND_H_INCLUDED
#define EXEC_OPKG_COMMAND_H_INCLUDED
#include "update_command.h"
class ExecOpkgCommand : public UpdateCommand {
bool m_noaction{false};
public:
explicit ExecOpkgCommand(QString const &command,
Worker *worker,
bool noaction,
int start_timeout = 100000,
int finish_timeout = 100000);
};
#endif // EXEC_OPKG_COMMAND_H_INCLUDED

View File

@ -0,0 +1,9 @@
#include "process/show_software_status_command.h"
ShowSoftwareStatusCommand::ShowSoftwareStatusCommand(QString const &command,
Worker *worker,
int start_timeout,
int finish_timeout)
: UpdateCommand(command, worker, start_timeout, finish_timeout) {
}

View File

@ -0,0 +1,13 @@
#ifndef SHOW_SOFTWARE_STATUS_COMMAND_H_INCLUDED
#define SHOW_SOFTWARE_STATUS_COMMAND_H_INCLUDED
#include "update_command.h"
class ShowSoftwareStatusCommand : public UpdateCommand {
public:
explicit ShowSoftwareStatusCommand(QString const &command,
Worker *worker,
int start_timeout = 100000,
int finish_timeout = 100000);
};
#endif // SHOW_SOFTWARE_STATUS_COMMAND_H_INCLUDED

View File

@ -0,0 +1,45 @@
#include "update_command.h"
#include "worker.h"
#include <QDebug>
#include <QProcess>
UpdateCommand::UpdateCommand(QString const &command,
Worker *worker,
int start_timeout,
int finish_timeout)
: Command(command, start_timeout, finish_timeout) {
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 = (QProcess *)sender();
if (p) {
// read all remaining data sent to the process, just in case
m_commandResult += p->readAllStandardOutput();
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) {
if (m_worker->workList().nextExec()) {
m_worker->workList().exec();
}
} else {
bool execShowStatus = true;
m_worker->workList().exec(execShowStatus);
}
}
}

View File

@ -0,0 +1,20 @@
#ifndef UPDATE_COMMAND_H_INCLUDED
#define UPDATE_COMMAND_H_INCLUDED
#include "process/command.h"
class Worker;
class UpdateCommand : public Command {
public:
explicit UpdateCommand(QString const &command,
Worker *worker,
int start_timeout = 100000,
int finish_timeout = 100000);
virtual bool stopUpdateOnFailure();
private slots:
virtual void finished(int exitCode, QProcess::ExitStatus exitStatus) override;
};
#endif // UPDATE_COMMAND_H_INCLUDED

View File

@ -0,0 +1,8 @@
#include "process/update_dc_command.h"
UpdateDCCommand::UpdateDCCommand(QString const &command,
Worker *worker,
int start_timeout,
int finish_timeout)
: UpdateCommand(command, worker, start_timeout, finish_timeout) {
}

View File

@ -0,0 +1,14 @@
#ifndef UPDATE_DC_COMMAND_H_INCLUDED
#define UPDATE_DC_COMMAND_H_INCLUDED
#include "update_command.h"
class UpdateDCCommand : public UpdateCommand {
public:
explicit UpdateDCCommand(QString const &command,
Worker *worker,
int start_timeout = 100000,
int finish_timeout = 100000);
};
#endif // UPDATE_DC_COMMAND_H_INCLUDED

View File

@ -0,0 +1,8 @@
#include "process/update_filesystem_command.h"
UpdateFileSystemCommand::UpdateFileSystemCommand(QString const &command,
Worker *worker,
int start_timeout,
int finish_timeout)
: UpdateCommand(command, worker, start_timeout, finish_timeout) {
}

View File

@ -0,0 +1,14 @@
#ifndef UPDATE_FS_COMMAND_H_INCLUDED
#define UPDATE_FS_COMMAND_H_INCLUDED
#include "update_command.h"
class UpdateFileSystemCommand : public UpdateCommand {
public:
explicit UpdateFileSystemCommand(QString const &command,
Worker *worker,
int start_timeout = 100000,
int finish_timeout = 100000);
};
#endif // UPDATE_FS_COMMAND_H_INCLUDED

View File

@ -0,0 +1,8 @@
#include "process/update_json_command.h"
UpdateJsonCommand::UpdateJsonCommand(QString const &command,
Worker *worker,
int start_timeout,
int finish_timeout)
: UpdateCommand(command, worker, start_timeout, finish_timeout) {
}

View File

@ -0,0 +1,14 @@
#ifndef UPDATE_JSON_COMMAND_H_INCLUDED
#define UPDATE_JSON_COMMAND_H_INCLUDED
#include "process/update_command.h"
class UpdateJsonCommand : public UpdateCommand {
public:
explicit UpdateJsonCommand(QString const &command,
Worker *worker,
int start_timeout = 100000,
int finish_timeout = 100000);
};
#endif // UPDATE_JSON_HANDLER_H_INCLUDED