UNPKG

@hangtime/grip-connect-cli

Version:
65 lines 3.14 kB
/** * `grip-connect list` -- lists all supported devices and their capabilities. */ import pc from "picocolors"; import { devices } from "../devices/index.js"; import { outputJson, resolveContext } from "../utils.js"; /** * Registers the `list` command on the Commander program. * * @param program - The root Commander program. */ export function registerList(program) { program .command("list") .description("List all supported devices and their capabilities") .action(() => { const ctx = resolveContext(program); if (ctx.json) { const out = Object.entries(devices).map(([key, def]) => { const d = new def.class(); return { key, name: def.name, capabilities: { stream: typeof d.stream === "function", battery: typeof d.battery === "function", tare: typeof d.tare === "function", download: typeof d.download === "function", active: typeof d.active === "function", }, }; }); outputJson({ devices: out }); return; } console.log(`\n${pc.bold("Supported devices")}\n`); console.log(` ${pc.dim("KEY".padEnd(16))}${pc.dim("NAME".padEnd(18))}${pc.dim("CAPABILITIES")}`); console.log(pc.dim(" " + "─".repeat(60))); for (const [key, def] of Object.entries(devices)) { const d = new def.class(); const caps = []; if (typeof d.stream === "function") caps.push(pc.green("stream")); if (typeof d.battery === "function") caps.push(pc.cyan("battery")); if (typeof d.tare === "function") caps.push(pc.yellow("tare")); if (typeof d.download === "function") caps.push(pc.magenta("download")); if (typeof d.active === "function") caps.push(pc.blue("active")); console.log(` ${key.padEnd(16)}${def.name.padEnd(18)}${caps.join(pc.dim(", "))}`); } console.log(`\n${pc.bold("Usage")}`); console.log(` ${pc.dim("$")} grip-connect ${pc.dim("Interactive mode")}`); console.log(` ${pc.dim("$")} grip-connect live [device] ${pc.dim("Live Data: raw force visualised in real-time")}`); console.log(` ${pc.dim("$")} grip-connect watch [device] ${pc.dim("Indefinite stream + summary")}`); console.log(` ${pc.dim("$")} grip-connect info [device] ${pc.dim("Device information")}`); console.log(` ${pc.dim("$")} grip-connect download [device] ${pc.dim("Export session data")}`); console.log(` ${pc.dim("$")} grip-connect tare [device] ${pc.dim("Tare calibration")}`); console.log(` ${pc.dim("$")} grip-connect active [device] ${pc.dim("Activity monitor")}`); console.log(`\n${pc.dim("Example:")} grip-connect live progressor\n`); }); } //# sourceMappingURL=list.js.map