diff --git a/lib/platform/process.dart b/lib/platform/process.dart index 6dbfa85..f099130 100644 --- a/lib/platform/process.dart +++ b/lib/platform/process.dart @@ -159,12 +159,11 @@ class ProcessExecutor { bool? printStdout, bool? printStderr, LogHandler? logHandler}) async { - var c = Completer(); + var printStdout_ = printStdout ?? true; + var printStderr_ = printStderr ?? true; + var processData = ProcessData(printStdout_, printStderr_, + logHandler: logHandler, decoder: decoder); try { - var printStdout_ = printStdout ?? true; - var printStderr_ = printStderr ?? true; - var processData = ProcessData(printStdout_, printStderr_, - logHandler: logHandler, decoder: decoder); if (Platform.isMacOS || Platform.isLinux) { workspace = workspace ?? Directory.systemTemp.path; var file = File('$workspace/$tempFileName'); @@ -214,22 +213,21 @@ class ProcessExecutor { logHandler ?? ('This platform not support process executor.', LogType.error); } - c.complete(processData); await processData.waitForExit(); } on Exception catch (e) { logHandler ?? ('General Exception in ProcessExecutor.start: $e', LogType.error); } - return c.future; + return dataFutrue(processData); } - static Future run(StringBuffer shell, + static Future run(StringBuffer shell, {String? workspace, bool printStdout = true, bool printStderr = true, Converter, String>? decoder, LogHandler? logHandler}) async { - var c = Completer(); + ProcessResult? processResult; workspace = workspace ?? Directory.systemTemp.path; var file = File('$workspace/$tempFileName'); if (printStdout) { @@ -244,7 +242,6 @@ class ProcessExecutor { LogType.verbose ); } - ProcessResult? processResult; if (Platform.isMacOS || Platform.isLinux) { file.createSync(); file.writeAsStringSync(shell.toString()); @@ -273,7 +270,6 @@ class ProcessExecutor { } finally { file.deleteSync(); } - c.complete(processResult); } else if (Platform.isWindows) { file.createSync(); file.writeAsStringSync(shell.toString()); @@ -289,13 +285,10 @@ class ProcessExecutor { // 'Error: ${eucKr.decode(processResult!.stderr)}'); } file.deleteSync(); - c.complete(processResult); } else { - logHandler ?? - ('This platform not support process executor.', LogType.error); - c.complete(null); + return throw Exception('This platform not support process executor.'); } - return c.future; + return dataFutrue(processResult); } static String get tempFileName { @@ -370,7 +363,7 @@ Future runGetStdout(StringBuffer shell) async { var batch = File('${Directory.systemTemp.path}/temp_${getRnadomPostfix()}.bat'); batch.writeAsStringSync(shellStr); - var result = await ProcessExecutor.run(shell); + var result = (await ProcessExecutor.run(shell))!; if (result.exitCode == 0 || result.exitCode == 1) { c.complete(result.stdout); return c.future; @@ -432,7 +425,7 @@ Future> findProcess(String searchWord, } else { var shell = StringBuffer( 'ps -A | grep \'$searchWord\' | grep -v grep | awk \'{\$2=\$3=""; print \$0}\''); - var result = await ProcessExecutor.run(shell, printStdout: false); + var result = (await ProcessExecutor.run(shell, printStdout: false))!; if (result.exitCode == 0) { var procList = result.stdout.toString().split('\n'); for (var proc in procList) { diff --git a/lib/utils/os_startup.dart b/lib/utils/os_startup.dart index 71762d7..d491699 100644 --- a/lib/utils/os_startup.dart +++ b/lib/utils/os_startup.dart @@ -118,12 +118,10 @@ fi @override Future isRegistedStartup(String label) async { - var c = Completer(); var plistName = '$label.plist'; var userPath = await Path.userPath; - c.complete( + return dataFutrue( await File('$userPath/Library/LaunchAgents/$plistName').exists()); - return c.future; } //shell file must have '#!/bin/sh' @@ -140,16 +138,17 @@ fi final appDir = Directory('$userPath/Library/$label'); final file = File('${appDir.path}/launch.sh'); - if(!appDir.existsSync()) { + if (!appDir.existsSync()) { appDir.createSync(recursive: true); } var param = arguments == null ? '' : ' ${arguments.join(' ')}'; - var launchContent = pathTemplate.replaceAll('{COMMAND}', '$executableFilePath$param'); + var launchContent = + pathTemplate.replaceAll('{COMMAND}', '$executableFilePath$param'); file.writeAsStringSync(launchContent); //create plist in LaunchAgents - + final tagLogStandard = '{LOG_STANDARD}'; final tagLogError = '{LOG_ERROR}'; var plistContent = plistTemplate @@ -171,16 +170,15 @@ fi await plistFile.create(); await plistFile.writeAsString(plistContent); - var result = await ProcessExecutor.run( - StringBuffer('chmod +x "$executableFilePath" && chmod +x "${file.path}" ')); - success = result.exitCode == 0; + var result = await ProcessExecutor.run(StringBuffer( + 'chmod +x "$executableFilePath" && chmod +x "${file.path}" ')); + success = result!.exitCode == 0; return dataFutrue(success); } @override Future unregistStartup(String label) async { - var c = Completer(); var success = false; var plistName = '$label.plist'; var userPath = await Path.userPath; @@ -189,8 +187,7 @@ fi await file.delete(); success = true; } - c.complete(success); - return c.future; + return dataFutrue(success); } } @@ -217,13 +214,11 @@ WantedBy=default.target"""; @override Future isRegistedStartup(String label) async { - var c = Completer(); var exist = false; var userPath = await Path.userPath; exist = await File('$userPath/.config/systemd/user/$label.service').exists(); - c.complete(exist); - return c.future; + return dataFutrue(exist); } //shell file must have '#!/bin/sh' @@ -232,7 +227,6 @@ WantedBy=default.target"""; {List? arguments, String? logStandardFilePath, String? logErrorFilePath}) async { - var c = Completer(); final tagLabel = '{LABEL}'; final tagPath = '{FILE_PATH}'; ProcessResult? result; @@ -257,14 +251,12 @@ WantedBy=default.target"""; shell.write('systemctl --user enable $label && '); shell.write('systemctl --user daemon-reload'); result = await ProcessExecutor.run(shell); - print('exitCode: ${result.exitCode}'); - c.complete(result.exitCode == 0); - return c.future; + print('exitCode: ${result!.exitCode}'); + return dataFutrue(result.exitCode == 0); } @override Future unregistStartup(String label) async { - var c = Completer(); var success = false; var userPath = await Path.userPath; var shell = StringBuffer(); @@ -274,7 +266,7 @@ WantedBy=default.target"""; shell.write('systemctl --user disable $label && '); shell.write('systemctl --user daemon-reload'); var result = await ProcessExecutor.run(shell); - success = result.exitCode == 0; + success = result!.exitCode == 0; if (success) { success = false; @@ -284,8 +276,7 @@ WantedBy=default.target"""; success = true; } } - c.complete(success); - return c.future; + return dataFutrue(success); } } @@ -303,7 +294,6 @@ Set WshShell = Nothing @override Future isRegistedStartup(String label) async { - var c = Completer(); //For Windows 8, 10 var exist = false; var userPath = await Path.userPath; @@ -318,8 +308,7 @@ Set WshShell = Nothing break; } } - c.complete(exist); - return c.future; + return dataFutrue(exist); } //shell file must have '#!/bin/sh' @@ -328,8 +317,6 @@ Set WshShell = Nothing {List? arguments, String? logStandardFilePath, String? logErrorFilePath}) async { - var c = Completer(); - var file = File(executableFilePath); ProcessResult? result; //For Windows 8, 10 var userPath = Platform.environment['UserProfile']; @@ -361,13 +348,11 @@ Set WshShell = Nothing var symbolicPath = '$userPath$windowsStartupPath$label.vbs'; result = await ProcessExecutor.run( StringBuffer('mklink "$symbolicPath" "${vbsFile.path}"')); - c.complete(result.exitCode == 0); - return c.future; + return dataFutrue(result!.exitCode == 0); } @override Future unregistStartup(String label) async { - var c = Completer(); var success = false; //For Windows 8, 10 var userPath = Platform.environment['UserProfile']; @@ -398,7 +383,6 @@ Set WshShell = Nothing break; } } - c.complete(success); - return c.future; + return dataFutrue(success); } }