summaryrefslogtreecommitdiff
path: root/mod.ts
diff options
context:
space:
mode:
Diffstat (limited to 'mod.ts')
-rwxr-xr-xmod.ts47
1 files changed, 26 insertions, 21 deletions
diff --git a/mod.ts b/mod.ts
index 81a2bc2..0af8943 100755
--- a/mod.ts
+++ b/mod.ts
@@ -1,31 +1,36 @@
#!/usr/bin/env -S deno run --allow-env --allow-net
-import { argv } from "@emprespresso/pengueno";
+import { argv, IEither, Either } from "@emprespresso/pengueno";
import { runServer } from "@emprespresso/ci_server";
-const main = (_argv = Deno.args) => {
- const defaults = {
- "--port": "9000",
- "--host": "0.0.0.0",
- };
- const _args = argv(["--run-server", "--port", "--host"], defaults, _argv);
- const args = _args.fold((err, args) => {
- if (!args || err) throw err;
- return {
+const _defaults = {
+ "--port": "9000",
+ "--host": "0.0.0.0",
+};
+const main = (
+ _argv = Deno.args,
+ defaults = _defaults,
+): Promise<IEither<Error, void>> =>
+ argv(["--run-server", "--port", "--host"], defaults, _argv)
+ .mapRight((args) => ({
server_mode: "--run-server" in args,
port: parseInt(args["--port"]),
host: args["--host"],
- };
- });
-
- const promises: Array<Promise<void>> = [];
- if (args.server_mode) {
- promises.push(runServer(args.port, args.host));
- }
-
- return Promise.all(promises);
-};
+ }))
+ .flatMapAsync((runConfig) => {
+ if (runConfig.server_mode) {
+ return runServer(runConfig.port, runConfig.host);
+ }
+ return Promise.resolve(Either.right(undefined));
+ });
if (import.meta.main) {
- await main();
+ await main().then((eitherDone) =>
+ eitherDone.fold(({ isLeft, value }) => {
+ if (!isLeft) return;
+
+ console.error(value);
+ Deno.exit(1);
+ }),
+ );
}