code refactoring

This commit is contained in:
Toki 2024-12-31 11:46:13 +09:00
parent abeafdaf37
commit 7653df802b
2 changed files with 28 additions and 51 deletions

View file

@ -159,12 +159,11 @@ class ProcessExecutor {
bool? printStdout,
bool? printStderr,
LogHandler? logHandler}) async {
var c = Completer<ProcessData>();
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<ProcessResult> run(StringBuffer shell,
static Future<ProcessResult?> run(StringBuffer shell,
{String? workspace,
bool printStdout = true,
bool printStderr = true,
Converter<List<int>, String>? decoder,
LogHandler? logHandler}) async {
var c = Completer<ProcessResult>();
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<String> 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<List<ProcessInfo>> 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) {

View file

@ -118,12 +118,10 @@ fi
@override
Future<bool> isRegistedStartup(String label) async {
var c = Completer<bool>();
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<bool> unregistStartup(String label) async {
var c = Completer<bool>();
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<bool> isRegistedStartup(String label) async {
var c = Completer<bool>();
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<String>? arguments,
String? logStandardFilePath,
String? logErrorFilePath}) async {
var c = Completer<bool>();
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<bool> unregistStartup(String label) async {
var c = Completer<bool>();
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<bool> isRegistedStartup(String label) async {
var c = Completer<bool>();
//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<String>? arguments,
String? logStandardFilePath,
String? logErrorFilePath}) async {
var c = Completer<bool>();
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<bool> unregistStartup(String label) async {
var c = Completer<bool>();
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);
}
}