Used to execute a script file or more complex multiline scripts. Compared to RemoteCommand, the latter can only execute one command, while the former can execute multiple complex commands including loops, conditional statements, etc.
Because it is executed asynchronously, in order to facilitate collaboration with async/await, a JS interface with the same name but lowercase initial is encapsulated. The specific source code is as follows: https://github.com/aoyiduo/woterm/blob/main/woterm/js/async.js
Its reference example:
https://github.com/aoyiduo/woterm/blob/main/private/playbooks/test/TestBigScriptCommand.qml
The core code is as follows:
import BigScriptCommand 1.0
BigScriptCommand {
id: remote
}
TextArea {
id: cmd
Component.onCompleted: {
cmd.append("#!/usr/bin/env bash")
cmd.append("df -h")
cmd.append("ps -ef")
cmd.append("ping -c 3 127.0.0.1")
cmd.append("ls woterm")
cmd.append("if [ $? -eq 0 ]; then")
cmd.append(" echo \"yes, it is ok\"")
cmd.append("else")
cmd.append(" echo \"Sorry, it is bad\"")
cmd.append("fi")
}
}
asyncGenerator(function*(){
Playbook.log("script start.")
remote.hosts = hosts.text.split(',')
yield bigScriptCommand(remote, cmd.text).catch(function(){})
Playbook.log("script finish.")
})()
The Property list is as follows:
QString script:[readable / writable],Read or set script content.
The list of functions is as follows:
- bool loadFromFile(const QString& fileName);
The script content is loaded from a file.
parameters:
>>fileName: The absolute path of the local file format. - bool saveToFile(const QString& fileName);
Save the currently executing script to a file.
parameters:
>>fileName: The absolute path of the local file format.