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; }