mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
- Add classify.ts as the single source of truth for CLI invocation routing (discriminated union, derives known commands from Commander) - Remove all hardcoded command lists and duplicate path detection logic - Simplify shell wrappers to dumb pipes (zero classification) - Fix hot-start: use `open -n -g -a` (VS Code pattern) so second-instance event fires when app is already running - Fix cold-start race: pull-based IPC (getPendingOpenProject) so renderer fetches the pending path after React mounts, instead of push event that arrived before the listener existed - Fix asar read corruption: unpack node-entrypoint-runner.js from asar (Node.js v24 in Electron 41 can't parse package.json inside asar) - Strip ELECTRON_RUN_AS_NODE from env when spawning desktop app from CLI
27 lines
717 B
TypeScript
27 lines
717 B
TypeScript
import { createCli } from "./cli.js";
|
|
import { classifyInvocation } from "./classify.js";
|
|
import { openDesktopWithProject } from "./commands/open.js";
|
|
|
|
const program = createCli();
|
|
const knownCommands = new Set(program.commands.map((command) => command.name()));
|
|
|
|
const invocation = classifyInvocation({
|
|
argv: process.argv.slice(2),
|
|
knownCommands,
|
|
cwd: process.cwd(),
|
|
});
|
|
|
|
switch (invocation.kind) {
|
|
case "cli": {
|
|
const argv = [...process.argv.slice(0, 2), ...invocation.argv];
|
|
if (invocation.argv.length === 0) {
|
|
argv.push("onboard");
|
|
}
|
|
program.parse(argv, { from: "node" });
|
|
break;
|
|
}
|
|
case "open-project":
|
|
await openDesktopWithProject(invocation.resolvedPath);
|
|
break;
|
|
}
|