Revert "code refactoring"

This reverts commit 7653df802b.
This commit is contained in:
Toki 2024-12-31 11:51:51 +09:00
parent 7653df802b
commit 81e7eb2f98
2 changed files with 51 additions and 28 deletions

View file

@ -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<ProcessData>();
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<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 {
ProcessResult? processResult;
var c = Completer<ProcessResult>();
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<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;
@ -425,7 +432,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,10 +118,12 @@ fi
@override
Future<bool> isRegistedStartup(String label) async {
var c = Completer<bool>();
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<bool> unregistStartup(String label) async {
var c = Completer<bool>();
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<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();
return dataFutrue(exist);
c.complete(exist);
return c.future;
}
//shell file must have '#!/bin/sh'
@ -227,6 +232,7 @@ WantedBy=default.target""";
{List<String>? arguments,
String? logStandardFilePath,
String? logErrorFilePath}) async {
var c = Completer<bool>();
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<bool> unregistStartup(String label) async {
var c = Completer<bool>();
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<bool> isRegistedStartup(String label) async {
var c = Completer<bool>();
//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<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'];
@ -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<bool> unregistStartup(String label) async {
var c = Completer<bool>();
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;
}
}