Spaces:
Configuration error
Configuration error
| import type { Command } from "commander"; | |
| import { danger } from "../../globals.js"; | |
| import { defaultRuntime } from "../../runtime.js"; | |
| import { addGatewayClientOptions, callGatewayFromCli } from "../gateway-rpc.js"; | |
| import { warnIfCronSchedulerDisabled } from "./shared.js"; | |
| export function registerCronSimpleCommands(cron: Command) { | |
| addGatewayClientOptions( | |
| cron | |
| .command("rm") | |
| .alias("remove") | |
| .alias("delete") | |
| .description("Remove a cron job") | |
| .argument("<id>", "Job id") | |
| .option("--json", "Output JSON", false) | |
| .action(async (id, opts) => { | |
| try { | |
| const res = await callGatewayFromCli("cron.remove", opts, { id }); | |
| defaultRuntime.log(JSON.stringify(res, null, 2)); | |
| } catch (err) { | |
| defaultRuntime.error(danger(String(err))); | |
| defaultRuntime.exit(1); | |
| } | |
| }), | |
| ); | |
| addGatewayClientOptions( | |
| cron | |
| .command("enable") | |
| .description("Enable a cron job") | |
| .argument("<id>", "Job id") | |
| .action(async (id, opts) => { | |
| try { | |
| const res = await callGatewayFromCli("cron.update", opts, { | |
| id, | |
| patch: { enabled: true }, | |
| }); | |
| defaultRuntime.log(JSON.stringify(res, null, 2)); | |
| await warnIfCronSchedulerDisabled(opts); | |
| } catch (err) { | |
| defaultRuntime.error(danger(String(err))); | |
| defaultRuntime.exit(1); | |
| } | |
| }), | |
| ); | |
| addGatewayClientOptions( | |
| cron | |
| .command("disable") | |
| .description("Disable a cron job") | |
| .argument("<id>", "Job id") | |
| .action(async (id, opts) => { | |
| try { | |
| const res = await callGatewayFromCli("cron.update", opts, { | |
| id, | |
| patch: { enabled: false }, | |
| }); | |
| defaultRuntime.log(JSON.stringify(res, null, 2)); | |
| await warnIfCronSchedulerDisabled(opts); | |
| } catch (err) { | |
| defaultRuntime.error(danger(String(err))); | |
| defaultRuntime.exit(1); | |
| } | |
| }), | |
| ); | |
| addGatewayClientOptions( | |
| cron | |
| .command("runs") | |
| .description("Show cron run history (JSONL-backed)") | |
| .requiredOption("--id <id>", "Job id") | |
| .option("--limit <n>", "Max entries (default 50)", "50") | |
| .action(async (opts) => { | |
| try { | |
| const limitRaw = Number.parseInt(String(opts.limit ?? "50"), 10); | |
| const limit = Number.isFinite(limitRaw) && limitRaw > 0 ? limitRaw : 50; | |
| const id = String(opts.id); | |
| const res = await callGatewayFromCli("cron.runs", opts, { | |
| id, | |
| limit, | |
| }); | |
| defaultRuntime.log(JSON.stringify(res, null, 2)); | |
| } catch (err) { | |
| defaultRuntime.error(danger(String(err))); | |
| defaultRuntime.exit(1); | |
| } | |
| }), | |
| ); | |
| addGatewayClientOptions( | |
| cron | |
| .command("run") | |
| .description("Run a cron job now (debug)") | |
| .argument("<id>", "Job id") | |
| .option("--force", "Run even if not due", false) | |
| .action(async (id, opts) => { | |
| try { | |
| const res = await callGatewayFromCli("cron.run", opts, { | |
| id, | |
| mode: opts.force ? "force" : "due", | |
| }); | |
| defaultRuntime.log(JSON.stringify(res, null, 2)); | |
| } catch (err) { | |
| defaultRuntime.error(danger(String(err))); | |
| defaultRuntime.exit(1); | |
| } | |
| }), | |
| ); | |
| } | |