@hangtime/grip-connect-cli
Version:
CLI tool for Grip Connect devices
65 lines • 3.14 kB
JavaScript
/**
* `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