import { existsSync, readFileSync } from "fs"; const STATE_FILE_PATH = "/tmp/.regretevator_state"; type DeadUnknownState = { state: "DEAD" | "UNKNOWN" }; type InElevatorState = { floor: number; state: "INGAME"; isGoingUp: boolean; }; export type RegretevatorState = DeadUnknownState | InElevatorState; /* ➜ config git:(main) ✗ cat /tmp/.regretevator_state {"text":"ý 82","tooltip":"On Floor 82"} ➜ config git:(main) ✗ cat /tmp/.regretevator_state {"text":"ý ","tooltip":"Floor 82  83"} */ export function getRegretevatorState(): null | RegretevatorState { if (!existsSync(STATE_FILE_PATH)) return null; try { const { text, tooltip }: { text: string; tooltip: string } = JSON.parse( readFileSync(STATE_FILE_PATH).toString("utf-8"), ); if (/^On Floor ([0-9]+)$/.test(tooltip)) { const floorNum = tooltip.match(/^On Floor ([0-9]+)$/)![1]; return { floor: Number(floorNum), state: "INGAME", isGoingUp: false, }; } if (/^Floor ([0-9]+)/.test(tooltip)) { const floorNum = tooltip.match(/^Floor ([0-9]+)/)![1]; return { floor: Number(floorNum), state: "INGAME", isGoingUp: true, }; } return { state: "UNKNOWN", }; } catch {} return null; }