UNPKG

one

Version:

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

186 lines (185 loc) 8.6 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"); (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"), useTUI = (_args_tui = args.tui) !== null && _args_tui !== void 0 ? _args_tui : process.stdin.isTTY, { 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, cleanupSocket } = await import("../daemon/ipc.native.js"); (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"); (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(), lastActive = await getLastActiveDaemonServer(); if (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`)), 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 `)), status.servers.length === 0) console.log(colors.dim(" No servers registered"));else { console.log(" Registered servers:"); var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0; try { for (var _iterator = status.servers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) { var server = _step.value, shortRoot = server.root.replace(process.env.HOME || "", "~"), isActive = lastActive?.id === server.id, activeMarker = isActive ? colors.yellow(" \u2605") : ""; console.log(` ${colors.green(server.id)} ${server.bundleId} \u2192 :${server.port} (${shortRoot})${activeMarker}`); } } catch (err) { _didIteratorError = !0, _iteratorError = err; } finally { try { !_iteratorNormalCompletion && _iterator.return != null && _iterator.return(); } finally { if (_didIteratorError) throw _iteratorError; } } lastActive && console.log(colors.dim(` \u2605 = last active (used by oi/oa)`)); } if (status.routes.length > 0) { console.log(` Active routes:`); var _iteratorNormalCompletion1 = !0, _didIteratorError1 = !1, _iteratorError1 = void 0; try { for (var _iterator1 = status.routes[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) { var route = _step1.value; console.log(` ${route.key} \u2192 ${route.serverId}`); } } catch (err) { _didIteratorError1 = !0, _iteratorError1 = err; } finally { try { !_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"), { getBundleIdFromConfig } = await import("../daemon/utils.native.js"), cwd = process.cwd(), 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)), await isDaemonRunning()) try { var status = await getDaemonStatus(), server = status.servers.find(function (s) { return s.root === cwd; }); server ? (await setDaemonRoute(bundleId, server.id), await touchDaemonServer(server.id), console.log(colors.cyan(`[daemon] Route set: ${bundleId} \u2192 this project`))) : (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, clearDaemonRoute } = await import("../daemon/ipc.native.js"); (await isDaemonRunning()) || (console.log(colors.yellow("Daemon is not running")), process.exit(1)), 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(), targetServer; if (args.slot !== void 0) { var slotIndex = parseInt(args.slot, 10), matchingServers = status.servers.filter(function (s) { return s.bundleId === args.app; }); (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; }), 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"), trayPaths = ["/Applications/OneTray.app", `${process.env.HOME}/Applications/OneTray.app`], installed = trayPaths.some(function (p) { return existsSync(p); }); 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