code refactoring
This commit is contained in:
parent
abeafdaf37
commit
7653df802b
2 changed files with 28 additions and 51 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue