Add cli/ package with initial scaffolding. Add config-schema to shared package for typed configuration. Add server config-file loader for paperclip.config.ts support. Register cli in pnpm workspace. Add .paperclip/ and .pnpm-store/ to gitignore. Minor Companies page fix. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
19 lines
610 B
TypeScript
19 lines
610 B
TypeScript
import net from "node:net";
|
|
|
|
export function checkPort(port: number): Promise<{ available: boolean; error?: string }> {
|
|
return new Promise((resolve) => {
|
|
const server = net.createServer();
|
|
server.once("error", (err: NodeJS.ErrnoException) => {
|
|
if (err.code === "EADDRINUSE") {
|
|
resolve({ available: false, error: `Port ${port} is already in use` });
|
|
} else {
|
|
resolve({ available: false, error: err.message });
|
|
}
|
|
});
|
|
server.once("listening", () => {
|
|
server.close(() => resolve({ available: true }));
|
|
});
|
|
server.listen(port, "127.0.0.1");
|
|
});
|
|
}
|