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