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); },""); registerSyncSubcommand("stop", (args) ->{ if (args.length < 1) { return false; } var name = args[0]; var result = ServiceManager.stop(name); return handleResult(result); },""); 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); }," [args...]"); registerSyncSubcommand("unregister", (args) ->{ if (args.length < 2) { return false; } var name = args[0]; var result = ServiceManager.unregister(name); return handleResult(result); },""); 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; },""); } private function handleResult(res: Outcome): Bool { switch (res) { case Success(_): return true; case Failure(e): this.handle.write(e); return false; } } }