io/process: support commands at file:// and root:// paths.
This commit is contained in:
parent
60dfa67ec7
commit
0445eee33a
|
@ -12,6 +12,7 @@
|
||||||
#include <qtypes.h>
|
#include <qtypes.h>
|
||||||
#include <qvariant.h>
|
#include <qvariant.h>
|
||||||
|
|
||||||
|
#include "../core/generation.hpp"
|
||||||
#include "../core/qmlglobal.hpp"
|
#include "../core/qmlglobal.hpp"
|
||||||
#include "datastream.hpp"
|
#include "datastream.hpp"
|
||||||
|
|
||||||
|
@ -53,6 +54,16 @@ QList<QString> Process::command() const { return this->mCommand; }
|
||||||
void Process::setCommand(QList<QString> command) {
|
void Process::setCommand(QList<QString> command) {
|
||||||
if (this->mCommand == command) return;
|
if (this->mCommand == command) return;
|
||||||
this->mCommand = std::move(command);
|
this->mCommand = std::move(command);
|
||||||
|
|
||||||
|
auto& cmd = this->mCommand.first();
|
||||||
|
if (cmd.startsWith("file://")) {
|
||||||
|
cmd = cmd.sliced(7);
|
||||||
|
} else if (cmd.startsWith("root://")) {
|
||||||
|
cmd = cmd.sliced(7);
|
||||||
|
auto& root = EngineGeneration::findObjectGeneration(this)->rootPath;
|
||||||
|
cmd = root.filePath(cmd.startsWith('/') ? cmd.sliced(1) : cmd);
|
||||||
|
}
|
||||||
|
|
||||||
emit this->commandChanged();
|
emit this->commandChanged();
|
||||||
|
|
||||||
this->startProcessIfReady();
|
this->startProcessIfReady();
|
||||||
|
|
|
@ -51,6 +51,14 @@ class Process: public QObject {
|
||||||
/// started process. If the property has been changed after starting a process it will
|
/// started process. If the property has been changed after starting a process it will
|
||||||
/// return the new value, not the one for the currently running process.
|
/// return the new value, not the one for the currently running process.
|
||||||
///
|
///
|
||||||
|
/// > [!WARNING] This does not run command in a shell. All arguments to the command
|
||||||
|
/// > must be in separate values in the list, e.g. `["echo", "hello"]`
|
||||||
|
/// > and not `["echo hello"]`.
|
||||||
|
/// >
|
||||||
|
/// > Additionally, shell scripts must be run by your shell,
|
||||||
|
/// > e.g. `["sh", "script.sh"]` instead of `["script.sh"]` unless the script
|
||||||
|
/// > has a shebang.
|
||||||
|
///
|
||||||
/// > [!INFO] You can use `["sh", "-c", <your command>]` to execute your command with
|
/// > [!INFO] You can use `["sh", "-c", <your command>]` to execute your command with
|
||||||
/// > the system shell.
|
/// > the system shell.
|
||||||
Q_PROPERTY(QList<QString> command READ command WRITE setCommand NOTIFY commandChanged);
|
Q_PROPERTY(QList<QString> command READ command WRITE setCommand NOTIFY commandChanged);
|
||||||
|
|
Loading…
Reference in a new issue