update process
This commit is contained in:
parent
5ffa7c3706
commit
3a7793a9ba
1 changed files with 18 additions and 6 deletions
|
|
@ -14,6 +14,10 @@ class ProcessData {
|
|||
Function(ProcessData)? _endListener;
|
||||
late StringBuffer stdout;
|
||||
late StringBuffer stderr;
|
||||
bool enableStdout = true;
|
||||
bool enableStderr = true;
|
||||
|
||||
ProcessData(_enableStdout, _enableStderr);
|
||||
|
||||
Function(ProcessData)? get endListener {
|
||||
return _endListener;
|
||||
|
|
@ -49,11 +53,15 @@ class ProcessData {
|
|||
stderr = StringBuffer();
|
||||
process.stdout.transform(utf8.decoder).listen((event) {
|
||||
stdout.writeln(event);
|
||||
print(event);
|
||||
if (enableStdout) {
|
||||
print(event);
|
||||
}
|
||||
});
|
||||
process.stderr.transform(utf8.decoder).listen((event) {
|
||||
stderr.writeln(event);
|
||||
print(event);
|
||||
if (enableStderr) {
|
||||
print(event);
|
||||
}
|
||||
});
|
||||
isRunning = true;
|
||||
checkExit();
|
||||
|
|
@ -91,10 +99,12 @@ class ProcessData {
|
|||
|
||||
class ProcessExecutor {
|
||||
static Future<ProcessData> startExe(String exe, List<String> args,
|
||||
{String? workspace}) async {
|
||||
{String? workspace, bool? enableStdout, bool? enableStderr}) async {
|
||||
enableStdout ??= true;
|
||||
enableStderr ??= true;
|
||||
var c = Completer<ProcessData>();
|
||||
var arg = '$exe ${args.join(' ')}';
|
||||
var processData = ProcessData();
|
||||
var processData = ProcessData(enableStdout, enableStderr);
|
||||
if (Platform.isMacOS || Platform.isWindows) {
|
||||
workspace = workspace ?? Directory.systemTemp.path;
|
||||
print('Execute Shell: $arg');
|
||||
|
|
@ -112,11 +122,13 @@ class ProcessExecutor {
|
|||
}
|
||||
|
||||
static Future<ProcessData> start(StringBuffer shell,
|
||||
{String? workspace}) async {
|
||||
{String? workspace, bool? enableStdout, bool? enableStderr}) async {
|
||||
var c = Completer<ProcessData>();
|
||||
enableStdout ??= true;
|
||||
enableStderr ??= true;
|
||||
|
||||
try {
|
||||
var processData = ProcessData();
|
||||
var processData = ProcessData(enableStdout, enableStderr);
|
||||
if (Platform.isMacOS || Platform.isLinux) {
|
||||
workspace = workspace ?? Directory.systemTemp.path;
|
||||
var file = File('$workspace/$tempFileName');
|
||||
|
|
|
|||
Loading…
Reference in a new issue