Files
cc-haxe/src/bin/srsc/CLI.hx
2023-07-30 23:34:35 +02:00

100 lines
2.3 KiB
Haxe

package bin.srsc;
import kernel.KernelSettings;
import kernel.net.Package.NetworkID;
import lib.CLIAppBase;
using tink.CoreApi;
class CLI extends CLIAppBase {
public function new() {
registerAsyncSubcommand("get", (args) -> {
if (args.length < 1) {
handle.writeLine("Not enough arguments");
return Future.sync(false);
}
var rpc = new SiteRessourceControllerRPC(KernelSettings.siteController);
return rpc.get(args[0]).map((res) -> {
switch (res) {
case Success(data):
if (data == null) {
handle.writeLine("Not found");
} else {
handle.writeLine("Found: " + data);
}
case Failure(error):
handle.writeLine("Error: " + error);
}
return true;
});
}, "<name>");
registerAsyncSubcommand("register", (args) -> {
if (args.length < 2) {
handle.writeLine("Not enough arguments");
return Future.sync(false);
}
var id:NetworkID = Std.parseInt(args[1]);
if (id == null) {
handle.writeLine("Invalid id");
return Future.sync(false);
}
var rpc = new SiteRessourceControllerRPC(KernelSettings.siteController);
return rpc.register(args[0], id).map((res) -> {
switch (res) {
case Success(data):
handle.writeLine("Success");
case Failure(error):
handle.writeLine("Error: " + error);
}
return true;
});
}, "<name> <id>");
registerAsyncSubcommand("unregister", (args) -> {
if (args.length < 1) {
handle.writeLine("Not enough arguments");
return Future.sync(false);
}
var rpc = new SiteRessourceControllerRPC(KernelSettings.siteController);
// FIXME
return Future.sync(true);
// return rpc.unregister(args[0]).map((res) -> {
// switch (res) {
// case Success(_):
// handle.writeLine("Success");
// case Failure(error):
// handle.writeLine("Error: " + error);
// }
// return true;
// });
}, "<name>");
registerAsyncSubcommand("list", (args) -> {
var rpc = new SiteRessourceControllerRPC(KernelSettings.siteController);
return rpc.list().map((res) -> {
switch (res) {
case Success(data):
for (name in data) {
handle.writeLine(name);
}
case Failure(error):
handle.writeLine("Error: " + error);
}
return true;
});
});
}
}