File indexing completed on 2024-05-19 04:47:11

0001 #pragma once
0002 #include <QObject>
0003 
0004 #include <QProcess>
0005 #include <QByteArray>
0006 
0007 namespace Git
0008 {
0009 class AbstractCommand;
0010 }
0011 
0012 
0013 class ActionRunner : public QObject
0014 {
0015     Q_OBJECT
0016 public:
0017     explicit ActionRunner(const QString &workingDir, QObject *parent = nullptr);
0018     ~ActionRunner();
0019 
0020     void run(Git::AbstractCommand *command);
0021     void run(const QStringList &args);
0022 
0023 private Q_SLOTS:
0024     void readyReadStandardOutput();
0025     void readyReadStandardError();
0026     void finished(int exitCode, QProcess::ExitStatus exitStatus);
0027 
0028 private:
0029     QProcess *mGitProcess = nullptr;
0030     Git::AbstractCommand *mCmd{nullptr};
0031 
0032     QByteArray mStandardOutput;
0033     QByteArray mErrorOutput;
0034 
0035     enum Mode { None, RunByArgs, RunByCommand };
0036        Mode mMode{None};
0037 
0038 
0039 Q_SIGNALS:
0040     void actionFished(bool ok, const QString &message);
0041 
0042 };
0043