2026-02-18 17:13:40 +00:00
|
|
|
import { parseSetUnsetCommandAction } from "./commands-setunset.js";
|
2026-02-16 02:10:57 +00:00
|
|
|
import { parseSlashCommandOrNull } from "./commands-slash-parse.js";
|
2026-01-10 03:00:24 +01:00
|
|
|
|
2026-01-09 16:38:52 +01:00
|
|
|
export type DebugCommand =
|
|
|
|
|
| { action: "show" }
|
|
|
|
|
| { action: "reset" }
|
|
|
|
|
| { action: "set"; path: string; value: unknown }
|
|
|
|
|
| { action: "unset"; path: string }
|
|
|
|
|
| { action: "error"; message: string };
|
|
|
|
|
|
|
|
|
|
export function parseDebugCommand(raw: string): DebugCommand | null {
|
2026-02-16 02:10:57 +00:00
|
|
|
const parsed = parseSlashCommandOrNull(raw, "/debug", {
|
|
|
|
|
invalidMessage: "Invalid /debug syntax.",
|
|
|
|
|
});
|
|
|
|
|
if (!parsed) {
|
2026-01-31 16:19:20 +09:00
|
|
|
return null;
|
|
|
|
|
}
|
2026-02-16 02:10:57 +00:00
|
|
|
if (!parsed.ok) {
|
|
|
|
|
return { action: "error", message: parsed.message };
|
2026-01-31 16:19:20 +09:00
|
|
|
}
|
2026-02-16 02:10:57 +00:00
|
|
|
const { action, args } = parsed;
|
2026-02-18 17:13:40 +00:00
|
|
|
const setUnset = parseSetUnsetCommandAction<DebugCommand>({
|
|
|
|
|
slash: "/debug",
|
|
|
|
|
action,
|
|
|
|
|
args,
|
|
|
|
|
onSet: (path, value) => ({ action: "set", path, value }),
|
|
|
|
|
onUnset: (path) => ({ action: "unset", path }),
|
|
|
|
|
onError: (message) => ({ action: "error", message }),
|
|
|
|
|
});
|
|
|
|
|
if (setUnset) {
|
|
|
|
|
return setUnset;
|
|
|
|
|
}
|
2026-01-09 16:38:52 +01:00
|
|
|
|
|
|
|
|
switch (action) {
|
|
|
|
|
case "show":
|
|
|
|
|
return { action: "show" };
|
|
|
|
|
case "reset":
|
|
|
|
|
return { action: "reset" };
|
|
|
|
|
default:
|
|
|
|
|
return {
|
|
|
|
|
action: "error",
|
|
|
|
|
message: "Usage: /debug show|set|unset|reset",
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|