86 lines
2.4 KiB
Dart
86 lines
2.4 KiB
Dart
import 'dart:async';
|
|
import 'dart:io';
|
|
|
|
import 'package:dart_framework/utils/os_startup.dart';
|
|
import 'package:oto_cli/cli/cli.dart';
|
|
import 'package:oto_cli/cli/commands/command_base.dart';
|
|
import 'package:oto_cli/cli/commands/command_const.dart';
|
|
import 'package:oto_cli/cli/commands/install/regist_path.dart';
|
|
|
|
class CommandInstall extends CommandBase {
|
|
@override
|
|
String get name => 'install';
|
|
|
|
@override
|
|
Future execute(List<String> parameters) async {
|
|
var c = Completer();
|
|
var label = CLI.serviceName;
|
|
if (!await OSStartup.isRegistedStartup(label)) {
|
|
var installPath = CommandConstant.OS!.installPath;
|
|
//Create install folder
|
|
var installDir = Directory(installPath);
|
|
if (!installDir.existsSync()) {
|
|
await installDir.create(recursive: true);
|
|
}
|
|
|
|
//Copy executable file
|
|
var target = File(Platform.resolvedExecutable);
|
|
var installFilePath = '$installPath\\$label';
|
|
await target.copy(installFilePath);
|
|
|
|
//Regist path
|
|
RegistPath.OS?.add(installPath);
|
|
|
|
//Create startup
|
|
await OSStartup.registStartup(installFilePath, label,
|
|
arguments: ['start']);
|
|
printOut('Installed successfully.', PrintType.information);
|
|
} else {
|
|
printOut('Installation failed because it is already installed.',
|
|
PrintType.error);
|
|
}
|
|
return c.future;
|
|
}
|
|
|
|
@override
|
|
String getDescription() {
|
|
var serviceName = CLI.current.config.serviceName;
|
|
return 'Install "$serviceName" to run in the background as a startup program.';
|
|
}
|
|
}
|
|
|
|
class CommandUninstall extends CommandBase {
|
|
@override
|
|
String get name => 'uninstall';
|
|
|
|
@override
|
|
Future execute(List<String> parameters) async {
|
|
var c = Completer<bool>();
|
|
var label = CLI.serviceName;
|
|
if (await OSStartup.isRegistedStartup(label)) {
|
|
var installPath = CommandConstant.OS!.installPath;
|
|
//To-do: Proccess kill
|
|
|
|
//Regist path
|
|
RegistPath.OS?.add(installPath);
|
|
|
|
//Remove Installed file
|
|
var installDir = Directory(installPath);
|
|
if (installDir.existsSync()) {
|
|
await installDir.delete(recursive: true);
|
|
}
|
|
|
|
//Remove startup
|
|
await OSStartup.unregistStartup(label);
|
|
printOut('Uninstalled successfully.', PrintType.information);
|
|
} else {
|
|
printOut('It is already uninstalled.', PrintType.warning);
|
|
}
|
|
return c.future;
|
|
}
|
|
|
|
@override
|
|
String getDescription() {
|
|
return 'Delete it from Startup.';
|
|
}
|
|
}
|