UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

254 lines (253 loc) 9.1 kB
import colors from "picocolors"; import { labelProcess } from "./label-process.native.js"; async function daemon(args) { var subcommand = args.subcommand || "run"; switch (subcommand) { case "run": case "start": return daemonStart(args); case "stop": return daemonStop(); case "status": return daemonStatus(); case "route": return daemonRoute(args); default: console.log(`Unknown daemon subcommand: ${subcommand}`); console.log("Available: start, stop, status, route"); process.exit(1); } } async function daemonStart(args) { var _args_tui; labelProcess("daemon"); var { isDaemonRunning } = await import("../daemon/ipc.native.js"); if (await isDaemonRunning()) { console.log(colors.yellow("Daemon is already running")); console.log("Use 'one daemon status' to see registered servers"); process.exit(1); } await suggestTrayApp(); var { startDaemon } = await import("../daemon/server.native.js"); var useTUI = (_args_tui = args.tui) !== null && _args_tui !== void 0 ? _args_tui : process.stdin.isTTY; var { state } = await startDaemon({ port: args.port ? parseInt(args.port, 10) : void 0, host: args.host, quiet: useTUI }); if (useTUI) { var { startTUI } = await import("../daemon/tui.native.js"); startTUI(state); } } async function daemonStop() { var { isDaemonRunning, getSocketPath } = await import("../daemon/ipc.native.js"); if (!(await isDaemonRunning())) { console.log(colors.yellow("Daemon is not running")); process.exit(1); } console.log(colors.yellow("Note: daemon runs in foreground. Press Ctrl+C in the daemon terminal to stop.")); console.log(colors.dim(`Socket path: ${getSocketPath()}`)); } async function daemonStatus() { var { isDaemonRunning, getDaemonStatus, getLastActiveDaemonServer } = await import("../daemon/ipc.native.js"); if (!(await isDaemonRunning())) { console.log(colors.yellow("Daemon is not running")); console.log(colors.dim("Start with 'one daemon'")); process.exit(1); } try { var status = await getDaemonStatus(); var lastActive = await getLastActiveDaemonServer(); console.log(colors.cyan("\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550")); console.log(colors.cyan(" one daemon status")); console.log(colors.cyan("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n")); if (status.servers.length === 0) { console.log(colors.dim(" No servers registered")); } else { console.log(" Registered servers:"); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0; try { for (var _iterator = status.servers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var server = _step.value; var shortRoot = server.root.replace(process.env.HOME || "", "~"); var isActive = (lastActive === null || lastActive === void 0 ? void 0 : lastActive.id) === server.id; var activeMarker = isActive ? colors.yellow(" \u2605") : ""; console.log(` ${colors.green(server.id)} ${server.bundleId} \u2192 :${server.port} (${shortRoot})${activeMarker}`); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } if (lastActive) { console.log(colors.dim("\n \u2605 = last active (used by oi/oa)")); } } if (status.routes.length > 0) { console.log("\n Active routes:"); var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0; try { for (var _iterator1 = status.routes[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) { var route = _step1.value; console.log(` ${route.key} \u2192 ${route.serverId}`); } } catch (err) { _didIteratorError1 = true; _iteratorError1 = err; } finally { try { if (!_iteratorNormalCompletion1 && _iterator1.return != null) { _iterator1.return(); } } finally { if (_didIteratorError1) { throw _iteratorError1; } } } } console.log(""); } catch (err) { console.log(colors.red("Failed to get daemon status")); console.error(err); process.exit(1); } } async function openPlatform(platform) { var { isDaemonRunning, getDaemonStatus, setDaemonRoute, touchDaemonServer } = await import("../daemon/ipc.native.js"); var { getBundleIdFromConfig } = await import("../daemon/utils.native.js"); var cwd = process.cwd(); var bundleId = getBundleIdFromConfig(cwd); if (!bundleId) { console.log(colors.yellow("No app.json found in current directory")); console.log(colors.dim("Run this command from a One project directory")); process.exit(1); } if (await isDaemonRunning()) { try { var status = await getDaemonStatus(); var server = status.servers.find(function (s) { return s.root === cwd; }); if (server) { await setDaemonRoute(bundleId, server.id); await touchDaemonServer(server.id); console.log(colors.cyan(`[daemon] Route set: ${bundleId} \u2192 this project`)); } else { console.log(colors.yellow(`[daemon] No server registered for this project`)); console.log(colors.dim(`Run 'one dev' first, or the simulator will connect directly`)); } } catch (err) { console.log(colors.dim(`[daemon] Could not set route: ${err}`)); } } if (platform === "ios") { var { run } = await import("./runIos.native.js"); await run({}); } else { var { run: run1 } = await import("./runAndroid.native.js"); await run1({}); } } async function daemonRoute(args) { var { isDaemonRunning, getDaemonStatus, setDaemonRoute } = await import("../daemon/ipc.native.js"); if (!(await isDaemonRunning())) { console.log(colors.yellow("Daemon is not running")); process.exit(1); } if (!args.app) { console.log(colors.red("Missing --app parameter")); console.log("Usage: one daemon route --app=com.example.app --slot=0"); console.log(" or: one daemon route --app=com.example.app --project=~/myapp"); process.exit(1); } var status = await getDaemonStatus(); var targetServer; if (args.slot !== void 0) { var slotIndex = parseInt(args.slot, 10); var matchingServers = status.servers.filter(function (s) { return s.bundleId === args.app; }); if (slotIndex < 0 || slotIndex >= matchingServers.length) { console.log(colors.red(`Invalid slot: ${args.slot}`)); console.log(`Available slots for ${args.app}: 0-${matchingServers.length - 1}`); process.exit(1); } targetServer = matchingServers[slotIndex]; } else if (args.project) { var normalizedProject = args.project.replace(/^~/, process.env.HOME || ""); targetServer = status.servers.find(function (s) { return s.bundleId === args.app && s.root === normalizedProject; }); if (!targetServer) { console.log(colors.red(`No server found for ${args.app} at ${args.project}`)); process.exit(1); } } else { console.log(colors.red("Missing --slot or --project parameter")); process.exit(1); } await setDaemonRoute(args.app, targetServer.id); var shortRoot = targetServer.root.replace(process.env.HOME || "", "~"); console.log(colors.green(`Route set: ${args.app} \u2192 ${targetServer.id} (${shortRoot})`)); } async function suggestTrayApp() { var { existsSync } = await import("fs"); var trayPaths = ["/Applications/OneTray.app", `${process.env.HOME}/Applications/OneTray.app`]; var installed = trayPaths.some(function (p) { return existsSync(p); }); if (!installed) { console.log(colors.dim(" Tip: install OneTray.app for a native macOS cable interface")); console.log(colors.dim(" https://github.com/onejs/one/releases?q=one-tray")); console.log(""); } } export { daemon, openPlatform }; //# sourceMappingURL=daemon.native.js.map