cc-haxe/src/bin/Service.hx

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;
}
}
}