UNPKG

4bnode

Version:

4bnode is a CLI-powered backend development platform with a built-in visual dashboard to generate, manage, and test Node.js/Express APIs faster.

77 lines (61 loc) 2.16 kB
#!/usr/bin/env node import path from "path"; import { input } from "@inquirer/prompts"; import { getProjectRoot } from "./lib/project.js"; import { updateEnvFile } from "./lib/env.js"; import { addImport, insertBeforeListen } from "./lib/indexFile.js"; import { showHeader, showTaskDone, showError, showFileAction, installDeps, } from "./lib/ui.js"; async function main() { showHeader("add-serialport", "Add serial port communication"); const serialPortPath = await input({ message: "Serial port path:", default: process.platform === "win32" ? "COM3" : "/dev/tty-usbserial1", }); const baudRate = await input({ message: "Baud rate:", default: "9600", validate: (v) => (!isNaN(parseInt(v, 10)) ? true : "Enter a valid number."), }); console.log(); addImport("import { SerialPort } from 'serialport';"); addImport("import { ReadlineParser } from '@serialport/parser-readline';"); showFileAction("updated", "index.js"); const serialportSetup = ` try { const serialPort = new SerialPort({ baudRate: parseInt(process.env.BAUDRATE, 10) || ${baudRate}, path: process.env.SERIALPORT_PATH || '${serialPortPath}', }); const parser = serialPort.pipe(new ReadlineParser({ delimiter: "\\r\\n" })); parser.on("data", async (data) => { console.log('Received data:', data); }); serialPort.on("error", function (err) { console.error("SerialPort Error: ", err.message); }); } catch (error) { console.error("Error initializing SerialPort:", error); }`; insertBeforeListen(serialportSetup); const projectRoot = getProjectRoot(); updateEnvFile(path.join(projectRoot, ".env"), "SERIALPORT_PATH", serialPortPath); updateEnvFile(path.join(projectRoot, ".env"), "BAUDRATE", baudRate); showFileAction("updated", ".env"); await installDeps(["serialport", "@serialport/parser-readline"]); showTaskDone("SerialPort integration complete", [ `Path: ${serialPortPath}`, `Baud rate: ${baudRate}`, "Data logged to console on receive", ]); } main().catch((err) => { if (err.name === "ExitPromptError") process.exit(0); showError(err.message); process.exit(1); });