-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathcmd.h
44 lines (36 loc) · 1.6 KB
/
cmd.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#pragma once
#include <QProcess>
class QTextStream;
enum struct Elevation { No, Yes };
enum struct QuietMode { No, Yes };
class Cmd : public QProcess
{
Q_OBJECT
public:
explicit Cmd(QObject *parent = nullptr);
bool proc(const QString &cmd, const QStringList &args = {}, QString *output = nullptr,
const QByteArray *input = nullptr, QuietMode quiet = QuietMode::No, Elevation elevation = Elevation::No);
bool procAsRoot(const QString &cmd, const QStringList &args = {}, QString *output = nullptr,
const QByteArray *input = nullptr, QuietMode quiet = QuietMode::No);
bool run(const QString &cmd, QString *output = nullptr, const QByteArray *input = nullptr,
QuietMode quiet = QuietMode::No, Elevation elevation = Elevation::No);
bool runAsRoot(const QString &cmd, QString *output = nullptr, const QByteArray *input = nullptr,
QuietMode quiet = QuietMode::No);
[[nodiscard]] QString getOut(const QString &cmd, QuietMode quiet = QuietMode::No,
Elevation elevation = Elevation::No);
[[nodiscard]] QString getOutAsRoot(const QString &cmd, QuietMode quiet = QuietMode::No);
signals:
void done();
void errorAvailable(const QString &err);
void outputAvailable(const QString &out);
private slots:
void handleStandardError();
void handleStandardOutput();
private:
QString outBuffer;
QString elevationCommand;
QString helper;
static constexpr int EXIT_CODE_COMMAND_NOT_FOUND = 127;
static constexpr int EXIT_CODE_PERMISSION_DENIED = 126;
void handleElevationError();
};