From 81e7eb2f9802816172fe5c308b3341c647babfe4 Mon Sep 17 00:00:00 2001 From: Toki Date: Tue, 31 Dec 2024 11:51:51 +0900 Subject: [PATCH] Revert "code refactoring" This reverts commit 7653df802bd5dd5bef8e864d072b8c19967114e6. --- lib/platform/process.dart | 29 ++++++++++++++--------- lib/utils/os_startup.dart | 50 ++++++++++++++++++++++++++------------- 2 files changed, 51 insertions(+), 28 deletions(-) diff --git a/lib/platform/process.dart b/lib/platform/process.dart index f099130..6dbfa85 100644 --- a/lib/platform/process.dart +++ b/lib/platform/process.dart @@ -159,11 +159,12 @@ class ProcessExecutor { bool? printStdout, bool? printStderr, LogHandler? logHandler}) async { - var printStdout_ = printStdout ?? true; - var printStderr_ = printStderr ?? true; - var processData = ProcessData(printStdout_, printStderr_, - logHandler: logHandler, decoder: decoder); + var c = Completer(); 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'); @@ -213,21 +214,22 @@ 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 dataFutrue(processData); + return c.future; } - static Future run(StringBuffer shell, + static Future run(StringBuffer shell, {String? workspace, bool printStdout = true, bool printStderr = true, Converter, String>? decoder, LogHandler? logHandler}) async { - ProcessResult? processResult; + var c = Completer(); workspace = workspace ?? Directory.systemTemp.path; var file = File('$workspace/$tempFileName'); if (printStdout) { @@ -242,6 +244,7 @@ class ProcessExecutor { LogType.verbose ); } + ProcessResult? processResult; if (Platform.isMacOS || Platform.isLinux) { file.createSync(); file.writeAsStringSync(shell.toString()); @@ -270,6 +273,7 @@ class ProcessExecutor { } finally { file.deleteSync(); } + c.complete(processResult); } else if (Platform.isWindows) { file.createSync(); file.writeAsStringSync(shell.toString()); @@ -285,10 +289,13 @@ class ProcessExecutor { // 'Error: ${eucKr.decode(processResult!.stderr)}'); } file.deleteSync(); + c.complete(processResult); } else { - return throw Exception('This platform not support process executor.'); + logHandler ?? + ('This platform not support process executor.', LogType.error); + c.complete(null); } - return dataFutrue(processResult); + return c.future; } static String get tempFileName { @@ -363,7 +370,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; @@ -425,7 +432,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 d491699..71762d7 100644 --- a/lib/utils/os_startup.dart +++ b/lib/utils/os_startup.dart @@ -118,10 +118,12 @@ fi @override Future isRegistedStartup(String label) async { + var c = Completer(); var plistName = '$label.plist'; var userPath = await Path.userPath; - return dataFutrue( + c.complete( await File('$userPath/Library/LaunchAgents/$plistName').exists()); + return c.future; } //shell file must have '#!/bin/sh' @@ -138,17 +140,16 @@ 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 @@ -170,15 +171,16 @@ 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; @@ -187,7 +189,8 @@ fi await file.delete(); success = true; } - return dataFutrue(success); + c.complete(success); + return c.future; } } @@ -214,11 +217,13 @@ 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(); - return dataFutrue(exist); + c.complete(exist); + return c.future; } //shell file must have '#!/bin/sh' @@ -227,6 +232,7 @@ WantedBy=default.target"""; {List? arguments, String? logStandardFilePath, String? logErrorFilePath}) async { + var c = Completer(); final tagLabel = '{LABEL}'; final tagPath = '{FILE_PATH}'; ProcessResult? result; @@ -251,12 +257,14 @@ WantedBy=default.target"""; shell.write('systemctl --user enable $label && '); shell.write('systemctl --user daemon-reload'); result = await ProcessExecutor.run(shell); - print('exitCode: ${result!.exitCode}'); - return dataFutrue(result.exitCode == 0); + print('exitCode: ${result.exitCode}'); + c.complete(result.exitCode == 0); + return c.future; } @override Future unregistStartup(String label) async { + var c = Completer(); var success = false; var userPath = await Path.userPath; var shell = StringBuffer(); @@ -266,7 +274,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; @@ -276,7 +284,8 @@ WantedBy=default.target"""; success = true; } } - return dataFutrue(success); + c.complete(success); + return c.future; } } @@ -294,6 +303,7 @@ Set WshShell = Nothing @override Future isRegistedStartup(String label) async { + var c = Completer(); //For Windows 8, 10 var exist = false; var userPath = await Path.userPath; @@ -308,7 +318,8 @@ Set WshShell = Nothing break; } } - return dataFutrue(exist); + c.complete(exist); + return c.future; } //shell file must have '#!/bin/sh' @@ -317,6 +328,8 @@ 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']; @@ -348,11 +361,13 @@ Set WshShell = Nothing var symbolicPath = '$userPath$windowsStartupPath$label.vbs'; result = await ProcessExecutor.run( StringBuffer('mklink "$symbolicPath" "${vbsFile.path}"')); - return dataFutrue(result!.exitCode == 0); + c.complete(result.exitCode == 0); + return c.future; } @override Future unregistStartup(String label) async { + var c = Completer(); var success = false; //For Windows 8, 10 var userPath = Platform.environment['UserProfile']; @@ -383,6 +398,7 @@ Set WshShell = Nothing break; } } - return dataFutrue(success); + c.complete(success); + return c.future; } }