86 lines
2.1 KiB
Haxe
86 lines
2.1 KiB
Haxe
package bin;
|
|
|
|
import kernel.service.ServiceManager;
|
|
import lib.CLIAppBase;
|
|
|
|
using tink.CoreApi;
|
|
|
|
class Service extends CLIAppBase {
|
|
public function new() {
|
|
registerSyncSubcommand("start", (args) ->{
|
|
if (args.length < 1) {
|
|
return false;
|
|
}
|
|
|
|
var name = args[0];
|
|
|
|
var result = ServiceManager.start(name);
|
|
return handleResult(result);
|
|
},"<name>");
|
|
|
|
registerSyncSubcommand("stop", (args) ->{
|
|
if (args.length < 1) {
|
|
return false;
|
|
}
|
|
|
|
var name = args[0];
|
|
|
|
var result = ServiceManager.stop(name);
|
|
return handleResult(result);
|
|
},"<name>");
|
|
|
|
registerSyncSubcommand("register", (args) ->{
|
|
if (args.length < 2) {
|
|
return false;
|
|
}
|
|
|
|
var name = args[0];
|
|
var binName = args[1];
|
|
var rest = args.slice(2);
|
|
|
|
var result = ServiceManager.register(name, binName, rest);
|
|
return handleResult(result);
|
|
},"<name> <binary> [args...]");
|
|
|
|
registerSyncSubcommand("unregister", (args) ->{
|
|
if (args.length < 2) {
|
|
return false;
|
|
}
|
|
|
|
var name = args[0];
|
|
|
|
var result = ServiceManager.unregister(name);
|
|
return handleResult(result);
|
|
},"<name>");
|
|
|
|
registerSyncSubcommand("list", (args) ->{
|
|
|
|
var list = ServiceManager.listRunning();
|
|
|
|
for (name in list) {
|
|
this.handle.writeLine(name);
|
|
}
|
|
|
|
return true;
|
|
});
|
|
|
|
registerSyncSubcommand("enable", (args) ->{
|
|
if (args.length < 1) {
|
|
return false;
|
|
}
|
|
|
|
ServiceManager.enable(args[0]);
|
|
return true;
|
|
},"<name>");
|
|
}
|
|
|
|
private function handleResult(res: Outcome<Noise,String>): Bool {
|
|
switch (res) {
|
|
case Success(_):
|
|
return true;
|
|
case Failure(e):
|
|
this.handle.write(e);
|
|
return false;
|
|
}
|
|
}
|
|
} |