oto/lib/cli/commands/command_scheduler.dart
2024-12-25 22:07:53 +09:00

78 lines
No EOL
2.3 KiB
Dart

import 'dart:async';
import 'dart:io';
import 'package:oto_cli/cli/commands/command_base.dart';
import 'package:dart_framework/utils/system_util.dart';
import 'package:oto_cli/cli/commands/scheduler/scheduler_manager.dart';
class CommandScheduler extends CommandBase {
@override
Map<String, List<String>> get arguments => {
'-l': ["Shows the currently operational schedulers."],
'-r {file}': ["Register the defined file (yaml) with the scheduler."],
'-u {alias}': ["Unregister schedules registered with the scheduler based on alias."],
'-e {alias} {bool}': ["Enables/disables the registered scheduler."]
};
@override
String get name => 'scheduler';
final SchedulerManager _scheduler = SchedulerManager();
@override
Future execute(List<String> parameters) async {
for (var i = 0; i < parameters.length; ++i) {
var item = parameters[i];
if (item.startsWith('-l')) {
await _scheduler.showList();
break;
} else if (item.startsWith('-r')) {
if (parameters.length > i + 1) {
var file = parameters[i + 1];
await _scheduler.regist(file);
} else {
printHelp();
}
exit(0);
} else if (item.startsWith('-u')) {
if (parameters.length > i + 1) {
var alias = parameters[i + 1];
await _scheduler.unregist(alias);
} else {
printHelp();
}
break;
} else if (item.startsWith('-e')) {
if (parameters.length > i + 2) {
var alias = parameters[i + 1];
// ignore: sdk_version_since
var enable = bool.tryParse(parameters[i + 2]);
if(enable == null) {
printHelp();
} else {
await _scheduler.enableScheduler(alias, enable);
}
} else {
printHelp();
}
break;
}
//================== for Debug ==================//
else if (item.startsWith('-s')) { //hidden: start process
await _scheduler.start();
break;
} else if (item.startsWith('-t')) { //hidden: terminate process
await _scheduler.terminate();
break;
} else {
printHelp();
}
}
return simpleFuture;
}
@override
String getDescription() {
return ':::: Run as a service on the background.';
}
}