From c27fd1ad630efc8149dedc4501fcfe16dd8da425 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 2 Jun 2025 19:55:15 +0200 Subject: command line tool for enqueuing tasks --- scripts/cli.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 scripts/cli.ts diff --git a/scripts/cli.ts b/scripts/cli.ts new file mode 100644 index 0000000..be7a81b --- /dev/null +++ b/scripts/cli.ts @@ -0,0 +1,34 @@ + +const ws = new WebSocket(Deno.args[0]) + + +function do_stuff() { + + switch (Deno.args[1]) { + case "enqueue": + if (Deno.args.length >= 4) + ws.send(JSON.stringify({ t: "metadata", key: Deno.args[2], data: JSON.parse(Deno.args[3]) })) + ws.send(JSON.stringify({ t: "enqueue", key: Deno.args[2], ignore_complete: true })) + break; + case "save": + break; + default: + break + } + ws.send(JSON.stringify({ t: "save" })) +} + +ws.onerror = () => console.error("ws error") +ws.onclose = () => console.error("ws closed") +ws.onopen = () => { + console.log("ws open"); + ws.send(JSON.stringify({ t: "register", name: "cli", task_kinds: [] })) + do_stuff() + setTimeout(() => Deno.exit(0), 200) // not sure if websockets are flushed since they're non-blocking +} +ws.onmessage = ev => { + if (typeof ev.data != "string") return + const p = JSON.parse(ev.data) + if (p.t == "config") return + if (p.t == "error") console.error(`error: ${p.message}`); +} -- cgit v1.2.3-70-g09d2