| #!/usr/bin/env node |
| import path from "node:path"; |
| import { startPluginDevServer } from "./dev-server.js"; |
|
|
| function parseArg(flag: string): string | undefined { |
| const index = process.argv.indexOf(flag); |
| if (index < 0) return undefined; |
| return process.argv[index + 1]; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| async function main() { |
| const rootDir = parseArg("--root") ?? process.cwd(); |
| const uiDir = parseArg("--ui-dir") ?? "dist/ui"; |
| const host = parseArg("--host") ?? "127.0.0.1"; |
| const rawPort = parseArg("--port") ?? "4177"; |
| const port = Number.parseInt(rawPort, 10); |
| if (!Number.isFinite(port) || port <= 0 || port > 65535) { |
| throw new Error(`Invalid --port value: ${rawPort}`); |
| } |
|
|
| const server = await startPluginDevServer({ |
| rootDir: path.resolve(rootDir), |
| uiDir, |
| host, |
| port, |
| }); |
|
|
| |
| console.log(`Paperclip plugin dev server listening at ${server.url}`); |
|
|
| const shutdown = async () => { |
| await server.close(); |
| process.exit(0); |
| }; |
|
|
| process.on("SIGINT", () => { |
| void shutdown(); |
| }); |
| process.on("SIGTERM", () => { |
| void shutdown(); |
| }); |
| } |
|
|
| void main().catch((error) => { |
| |
| console.error(error instanceof Error ? error.message : String(error)); |
| process.exit(1); |
| }); |
|
|