@sigx/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +78 -0
- package/dist/cli.js +230 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/create.d.ts +1 -0
- package/dist/commands/create.js +411 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/plugin.d.ts +26 -0
- package/dist/plugin.js +11 -0
- package/dist/plugin.js.map +1 -0
- package/dist/templates/basic/index.html +32 -0
- package/dist/templates/basic/package.json +19 -0
- package/dist/templates/basic/src/App.tsx +35 -0
- package/dist/templates/basic/tsconfig.json +13 -0
- package/dist/templates/basic/vite.config.ts +15 -0
- package/dist/templates/basic-daisyui/index.html +14 -0
- package/dist/templates/basic-daisyui/package.json +23 -0
- package/dist/templates/basic-daisyui/src/App.tsx +165 -0
- package/dist/templates/basic-daisyui/src/style.css +5 -0
- package/dist/templates/basic-daisyui/tsconfig.json +13 -0
- package/dist/templates/basic-daisyui/vite.config.ts +17 -0
- package/dist/templates/basic-tailwind/index.html +13 -0
- package/dist/templates/basic-tailwind/package.json +21 -0
- package/dist/templates/basic-tailwind/src/App.tsx +37 -0
- package/dist/templates/basic-tailwind/src/style.css +1 -0
- package/dist/templates/basic-tailwind/tsconfig.json +13 -0
- package/dist/templates/basic-tailwind/vite.config.ts +17 -0
- package/dist/templates/lynx/README.md +57 -0
- package/dist/templates/lynx/assets/adaptive-foreground.png +0 -0
- package/dist/templates/lynx/assets/icon.png +0 -0
- package/dist/templates/lynx/assets/splash.png +0 -0
- package/dist/templates/lynx/lynx.config.ts +17 -0
- package/dist/templates/lynx/package.json +28 -0
- package/dist/templates/lynx/sigx.lynx.config.ts +46 -0
- package/dist/templates/lynx/src/App.tsx +103 -0
- package/dist/templates/lynx/src/main.thread.tsx +2 -0
- package/dist/templates/lynx/src/main.tsx +8 -0
- package/dist/templates/lynx/tsconfig.json +19 -0
- package/dist/templates/lynx-tailwind/README.md +61 -0
- package/dist/templates/lynx-tailwind/assets/adaptive-foreground.png +0 -0
- package/dist/templates/lynx-tailwind/assets/icon.png +0 -0
- package/dist/templates/lynx-tailwind/assets/splash.png +0 -0
- package/dist/templates/lynx-tailwind/lynx.config.ts +20 -0
- package/dist/templates/lynx-tailwind/package.json +32 -0
- package/dist/templates/lynx-tailwind/postcss.config.js +5 -0
- package/dist/templates/lynx-tailwind/sigx.lynx.config.ts +44 -0
- package/dist/templates/lynx-tailwind/src/App.tsx +52 -0
- package/dist/templates/lynx-tailwind/src/main.thread.tsx +2 -0
- package/dist/templates/lynx-tailwind/src/main.tsx +9 -0
- package/dist/templates/lynx-tailwind/src/styles.css +3 -0
- package/dist/templates/lynx-tailwind/tailwind.config.ts +9 -0
- package/dist/templates/lynx-tailwind/tsconfig.json +19 -0
- package/dist/templates/ssg/index.html +25 -0
- package/dist/templates/ssg/package.json +22 -0
- package/dist/templates/ssg/src/layouts/default.tsx +27 -0
- package/dist/templates/ssg/src/pages/about.mdx +15 -0
- package/dist/templates/ssg/src/pages/index.mdx +37 -0
- package/dist/templates/ssg/ssg.config.ts +20 -0
- package/dist/templates/ssg/tsconfig.json +14 -0
- package/dist/templates/ssg/vite.config.ts +16 -0
- package/dist/templates/ssg-daisyui/index.html +13 -0
- package/dist/templates/ssg-daisyui/package.json +26 -0
- package/dist/templates/ssg-daisyui/src/layouts/default.tsx +39 -0
- package/dist/templates/ssg-daisyui/src/pages/about.mdx +17 -0
- package/dist/templates/ssg-daisyui/src/pages/index.mdx +34 -0
- package/dist/templates/ssg-daisyui/src/style.css +5 -0
- package/dist/templates/ssg-daisyui/ssg.config.ts +20 -0
- package/dist/templates/ssg-daisyui/tsconfig.json +14 -0
- package/dist/templates/ssg-daisyui/vite.config.ts +18 -0
- package/dist/templates/ssg-tailwind/index.html +12 -0
- package/dist/templates/ssg-tailwind/package.json +24 -0
- package/dist/templates/ssg-tailwind/src/layouts/default.tsx +29 -0
- package/dist/templates/ssg-tailwind/src/pages/about.mdx +16 -0
- package/dist/templates/ssg-tailwind/src/pages/index.mdx +37 -0
- package/dist/templates/ssg-tailwind/src/style.css +1 -0
- package/dist/templates/ssg-tailwind/ssg.config.ts +20 -0
- package/dist/templates/ssg-tailwind/tsconfig.json +14 -0
- package/dist/templates/ssg-tailwind/vite.config.ts +18 -0
- package/dist/templates/ssr/index.html +12 -0
- package/dist/templates/ssr/package.json +24 -0
- package/dist/templates/ssr/src/App.tsx +32 -0
- package/dist/templates/ssr/src/entry-client.tsx +25 -0
- package/dist/templates/ssr/src/entry-server.tsx +24 -0
- package/dist/templates/ssr/src/pages/About.tsx +20 -0
- package/dist/templates/ssr/src/pages/Home.tsx +31 -0
- package/dist/templates/ssr/src/router.ts +27 -0
- package/dist/templates/ssr/tsconfig.json +13 -0
- package/dist/templates/ssr/vite.config.ts +18 -0
- package/dist/templates/ssr-daisyui/index.html +14 -0
- package/dist/templates/ssr-daisyui/package.json +28 -0
- package/dist/templates/ssr-daisyui/src/App.tsx +55 -0
- package/dist/templates/ssr-daisyui/src/entry-client.tsx +25 -0
- package/dist/templates/ssr-daisyui/src/entry-server.tsx +24 -0
- package/dist/templates/ssr-daisyui/src/pages/About.tsx +104 -0
- package/dist/templates/ssr-daisyui/src/pages/Home.tsx +133 -0
- package/dist/templates/ssr-daisyui/src/router.ts +27 -0
- package/dist/templates/ssr-daisyui/src/style.css +5 -0
- package/dist/templates/ssr-daisyui/tsconfig.json +13 -0
- package/dist/templates/ssr-daisyui/vite.config.ts +20 -0
- package/dist/templates/ssr-tailwind/index.html +13 -0
- package/dist/templates/ssr-tailwind/package.json +26 -0
- package/dist/templates/ssr-tailwind/src/App.tsx +32 -0
- package/dist/templates/ssr-tailwind/src/entry-client.tsx +25 -0
- package/dist/templates/ssr-tailwind/src/entry-server.tsx +24 -0
- package/dist/templates/ssr-tailwind/src/pages/About.tsx +21 -0
- package/dist/templates/ssr-tailwind/src/pages/Home.tsx +31 -0
- package/dist/templates/ssr-tailwind/src/router.ts +27 -0
- package/dist/templates/ssr-tailwind/src/style.css +1 -0
- package/dist/templates/ssr-tailwind/tsconfig.json +13 -0
- package/dist/templates/ssr-tailwind/vite.config.ts +20 -0
- package/package.json +65 -0
- package/templates/basic/index.html +32 -0
- package/templates/basic/package.json +19 -0
- package/templates/basic/src/App.tsx +35 -0
- package/templates/basic/tsconfig.json +13 -0
- package/templates/basic/vite.config.ts +15 -0
- package/templates/basic-daisyui/index.html +14 -0
- package/templates/basic-daisyui/package.json +23 -0
- package/templates/basic-daisyui/src/App.tsx +165 -0
- package/templates/basic-daisyui/src/style.css +5 -0
- package/templates/basic-daisyui/tsconfig.json +13 -0
- package/templates/basic-daisyui/vite.config.ts +17 -0
- package/templates/basic-tailwind/index.html +13 -0
- package/templates/basic-tailwind/package.json +21 -0
- package/templates/basic-tailwind/src/App.tsx +37 -0
- package/templates/basic-tailwind/src/style.css +1 -0
- package/templates/basic-tailwind/tsconfig.json +13 -0
- package/templates/basic-tailwind/vite.config.ts +17 -0
- package/templates/lynx/README.md +57 -0
- package/templates/lynx/assets/adaptive-foreground.png +0 -0
- package/templates/lynx/assets/icon.png +0 -0
- package/templates/lynx/assets/splash.png +0 -0
- package/templates/lynx/lynx.config.ts +17 -0
- package/templates/lynx/package.json +28 -0
- package/templates/lynx/sigx.lynx.config.ts +46 -0
- package/templates/lynx/src/App.tsx +103 -0
- package/templates/lynx/src/main.thread.tsx +2 -0
- package/templates/lynx/src/main.tsx +8 -0
- package/templates/lynx/tsconfig.json +19 -0
- package/templates/lynx-tailwind/README.md +61 -0
- package/templates/lynx-tailwind/assets/adaptive-foreground.png +0 -0
- package/templates/lynx-tailwind/assets/icon.png +0 -0
- package/templates/lynx-tailwind/assets/splash.png +0 -0
- package/templates/lynx-tailwind/lynx.config.ts +20 -0
- package/templates/lynx-tailwind/package.json +32 -0
- package/templates/lynx-tailwind/postcss.config.js +5 -0
- package/templates/lynx-tailwind/sigx.lynx.config.ts +44 -0
- package/templates/lynx-tailwind/src/App.tsx +52 -0
- package/templates/lynx-tailwind/src/main.thread.tsx +2 -0
- package/templates/lynx-tailwind/src/main.tsx +9 -0
- package/templates/lynx-tailwind/src/styles.css +3 -0
- package/templates/lynx-tailwind/tailwind.config.ts +9 -0
- package/templates/lynx-tailwind/tsconfig.json +19 -0
- package/templates/ssg/index.html +25 -0
- package/templates/ssg/package.json +22 -0
- package/templates/ssg/src/layouts/default.tsx +27 -0
- package/templates/ssg/src/pages/about.mdx +15 -0
- package/templates/ssg/src/pages/index.mdx +37 -0
- package/templates/ssg/ssg.config.ts +20 -0
- package/templates/ssg/tsconfig.json +14 -0
- package/templates/ssg/vite.config.ts +16 -0
- package/templates/ssg-daisyui/index.html +13 -0
- package/templates/ssg-daisyui/package.json +26 -0
- package/templates/ssg-daisyui/src/layouts/default.tsx +39 -0
- package/templates/ssg-daisyui/src/pages/about.mdx +17 -0
- package/templates/ssg-daisyui/src/pages/index.mdx +34 -0
- package/templates/ssg-daisyui/src/style.css +5 -0
- package/templates/ssg-daisyui/ssg.config.ts +20 -0
- package/templates/ssg-daisyui/tsconfig.json +14 -0
- package/templates/ssg-daisyui/vite.config.ts +18 -0
- package/templates/ssg-tailwind/index.html +12 -0
- package/templates/ssg-tailwind/package.json +24 -0
- package/templates/ssg-tailwind/src/layouts/default.tsx +29 -0
- package/templates/ssg-tailwind/src/pages/about.mdx +16 -0
- package/templates/ssg-tailwind/src/pages/index.mdx +37 -0
- package/templates/ssg-tailwind/src/style.css +1 -0
- package/templates/ssg-tailwind/ssg.config.ts +20 -0
- package/templates/ssg-tailwind/tsconfig.json +14 -0
- package/templates/ssg-tailwind/vite.config.ts +18 -0
- package/templates/ssr/index.html +12 -0
- package/templates/ssr/package.json +24 -0
- package/templates/ssr/src/App.tsx +32 -0
- package/templates/ssr/src/entry-client.tsx +25 -0
- package/templates/ssr/src/entry-server.tsx +24 -0
- package/templates/ssr/src/pages/About.tsx +20 -0
- package/templates/ssr/src/pages/Home.tsx +31 -0
- package/templates/ssr/src/router.ts +27 -0
- package/templates/ssr/tsconfig.json +13 -0
- package/templates/ssr/vite.config.ts +18 -0
- package/templates/ssr-daisyui/index.html +14 -0
- package/templates/ssr-daisyui/package.json +28 -0
- package/templates/ssr-daisyui/src/App.tsx +55 -0
- package/templates/ssr-daisyui/src/entry-client.tsx +25 -0
- package/templates/ssr-daisyui/src/entry-server.tsx +24 -0
- package/templates/ssr-daisyui/src/pages/About.tsx +104 -0
- package/templates/ssr-daisyui/src/pages/Home.tsx +133 -0
- package/templates/ssr-daisyui/src/router.ts +27 -0
- package/templates/ssr-daisyui/src/style.css +5 -0
- package/templates/ssr-daisyui/tsconfig.json +13 -0
- package/templates/ssr-daisyui/vite.config.ts +20 -0
- package/templates/ssr-tailwind/index.html +13 -0
- package/templates/ssr-tailwind/package.json +26 -0
- package/templates/ssr-tailwind/src/App.tsx +32 -0
- package/templates/ssr-tailwind/src/entry-client.tsx +25 -0
- package/templates/ssr-tailwind/src/entry-server.tsx +24 -0
- package/templates/ssr-tailwind/src/pages/About.tsx +21 -0
- package/templates/ssr-tailwind/src/pages/Home.tsx +31 -0
- package/templates/ssr-tailwind/src/router.ts +27 -0
- package/templates/ssr-tailwind/src/style.css +1 -0
- package/templates/ssr-tailwind/tsconfig.json +13 -0
- package/templates/ssr-tailwind/vite.config.ts +20 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Andreas Ekdahl
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# @sigx/cli
|
|
2
|
+
|
|
3
|
+
The unified `sigx` command-line tool — daily-driver CLI for [SignalX](https://github.com/signalxjs/core) projects (web and Lynx).
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm i -D @sigx/cli
|
|
7
|
+
# then:
|
|
8
|
+
npx sigx <command>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
After scaffolding with `npm create sigx@latest`, the generated project depends on `@sigx/cli` directly. The `sigx` binary is the entry point for everything: scaffolding, dev servers, builds, previews, and platform-specific commands provided by plugins.
|
|
12
|
+
|
|
13
|
+
## Commands
|
|
14
|
+
|
|
15
|
+
| Command | Provided by | Description |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `sigx create [name]` | core | Scaffold a new project (interactive TUI; falls back to flag-driven headless when stdout isn't a TTY or when `--yes` / `--type` is passed) |
|
|
18
|
+
| `sigx info` | core | Print environment & project info (Node, pnpm, installed `@sigx/*` packages, Lynx toolchain) |
|
|
19
|
+
| `sigx dev` | `@sigx/vite` plugin | Start the Vite dev server (web) |
|
|
20
|
+
| `sigx build` | `@sigx/vite` plugin | Production build (web) |
|
|
21
|
+
| `sigx preview` | `@sigx/ssg` plugin | Serve a built SSG site |
|
|
22
|
+
| `sigx prebuild` | `@sigx/lynx-cli` | Generate native iOS/Android project files |
|
|
23
|
+
| `sigx run:android` | `@sigx/lynx-cli` | Build & launch on Android |
|
|
24
|
+
| `sigx run:ios` | `@sigx/lynx-cli` | Build & launch on iOS |
|
|
25
|
+
| `sigx doctor` | `@sigx/lynx-cli` | Verify Lynx toolchain (rspeedy, ADB, Xcode, JDK) |
|
|
26
|
+
|
|
27
|
+
Run `sigx --help` for the full live list (varies by what plugins are installed in your project).
|
|
28
|
+
|
|
29
|
+
## Headless `create` (CI / scripts)
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
sigx create my-app --type basic # web SPA
|
|
33
|
+
sigx create my-app --type ssr --styling tailwind # SSR + Tailwind
|
|
34
|
+
sigx create my-app --type ssg --styling daisyui # SSG + Tailwind + daisyUI
|
|
35
|
+
sigx create my-app --type lynx --styling tailwind # native mobile (Lynx)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Valid values:
|
|
39
|
+
|
|
40
|
+
- `--type`: `basic` | `ssr` | `ssg` | `lynx`
|
|
41
|
+
- `--styling`: `none` | `tailwind` | `daisyui` (daisyUI not available for `lynx`)
|
|
42
|
+
- `--yes` / `-y`: skip prompts even when running in a TTY
|
|
43
|
+
|
|
44
|
+
Headless mode is also auto-selected when stdin/stdout is not a TTY (e.g. CI runners).
|
|
45
|
+
|
|
46
|
+
## Plugins
|
|
47
|
+
|
|
48
|
+
Any package can extend `sigx` with new commands. To author a plugin, ship a `sigx-cli.plugin` field in your `package.json` pointing at a module that default-exports a `SigxPlugin`:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"name": "my-sigx-plugin",
|
|
53
|
+
"sigx-cli": { "plugin": "./dist/plugin.js" }
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
// my-sigx-plugin/src/plugin.ts
|
|
59
|
+
import type { SigxPlugin } from '@sigx/cli/plugin';
|
|
60
|
+
|
|
61
|
+
export default {
|
|
62
|
+
name: 'my-plugin',
|
|
63
|
+
commands: {
|
|
64
|
+
hello: {
|
|
65
|
+
description: 'Say hello',
|
|
66
|
+
async run({ cwd, args, logger }) {
|
|
67
|
+
logger.info(`hello from ${cwd}`);
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
} satisfies SigxPlugin;
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Plugins are discovered by walking up from `cwd` and inspecting installed dependencies' `package.json` files for the `sigx-cli.plugin` key.
|
|
75
|
+
|
|
76
|
+
## License
|
|
77
|
+
|
|
78
|
+
MIT — © Andreas Ekdahl
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { defineCommand, runMain } from "citty";
|
|
3
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
6
|
+
//#region \0rolldown/runtime.js
|
|
7
|
+
var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/discover.ts
|
|
10
|
+
/**
|
|
11
|
+
* Auto-discover sigx CLI plugins from the project's dependencies.
|
|
12
|
+
*
|
|
13
|
+
* Scans the project's package.json for dependencies that declare
|
|
14
|
+
* a `"sigx-cli": { "plugin": "./path/to/plugin.js" }` field.
|
|
15
|
+
* Loads each plugin and calls `detect(cwd)` to check if it applies.
|
|
16
|
+
*/
|
|
17
|
+
async function discoverPlugins(cwd) {
|
|
18
|
+
const pkgPath = join(cwd, "package.json");
|
|
19
|
+
if (!existsSync(pkgPath)) return [];
|
|
20
|
+
let pkg;
|
|
21
|
+
try {
|
|
22
|
+
pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
23
|
+
} catch {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
const allDeps = {
|
|
27
|
+
...pkg.dependencies,
|
|
28
|
+
...pkg.devDependencies
|
|
29
|
+
};
|
|
30
|
+
const plugins = [];
|
|
31
|
+
for (const depName of Object.keys(allDeps)) try {
|
|
32
|
+
const depPkgPath = join(cwd, "node_modules", depName, "package.json");
|
|
33
|
+
if (!existsSync(depPkgPath)) continue;
|
|
34
|
+
const pluginField = JSON.parse(readFileSync(depPkgPath, "utf-8"))["sigx-cli"];
|
|
35
|
+
if (!pluginField?.plugin) continue;
|
|
36
|
+
const pluginPath = join(cwd, "node_modules", depName, pluginField.plugin);
|
|
37
|
+
if (!existsSync(pluginPath)) continue;
|
|
38
|
+
const mod = await import(pathToFileURL(pluginPath).href);
|
|
39
|
+
const plugin = mod.default || mod;
|
|
40
|
+
if (typeof plugin.detect === "function" && plugin.detect(cwd)) plugins.push(plugin);
|
|
41
|
+
} catch {}
|
|
42
|
+
return plugins;
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region src/commands/info.ts
|
|
46
|
+
var import___vite_browser_external = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
47
|
+
module.exports = {};
|
|
48
|
+
})))();
|
|
49
|
+
function getVersion(cmd) {
|
|
50
|
+
try {
|
|
51
|
+
return (0, import___vite_browser_external.execSync)(cmd, {
|
|
52
|
+
stdio: "pipe",
|
|
53
|
+
encoding: "utf-8"
|
|
54
|
+
}).trim();
|
|
55
|
+
} catch {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
var infoCommand = defineCommand({
|
|
60
|
+
meta: {
|
|
61
|
+
name: "info",
|
|
62
|
+
description: "Print environment and project info"
|
|
63
|
+
},
|
|
64
|
+
run() {
|
|
65
|
+
const cwd = process.cwd();
|
|
66
|
+
console.log("\n \x1B[1msigx environment info\x1B[0m\n");
|
|
67
|
+
console.log(` Platform: ${process.platform} ${process.arch}`);
|
|
68
|
+
console.log(` Node: ${process.version}`);
|
|
69
|
+
const pnpmVer = getVersion("pnpm --version");
|
|
70
|
+
if (pnpmVer) console.log(` pnpm: v${pnpmVer}`);
|
|
71
|
+
else {
|
|
72
|
+
const npmVer = getVersion("npm --version");
|
|
73
|
+
if (npmVer) console.log(` npm: v${npmVer}`);
|
|
74
|
+
}
|
|
75
|
+
const pkgPath = join(cwd, "package.json");
|
|
76
|
+
if (existsSync(pkgPath)) try {
|
|
77
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
78
|
+
console.log(` Project: ${pkg.name || "(unnamed)"} v${pkg.version || "0.0.0"}`);
|
|
79
|
+
const allDeps = {
|
|
80
|
+
...pkg.dependencies,
|
|
81
|
+
...pkg.devDependencies
|
|
82
|
+
};
|
|
83
|
+
const sigxPkgs = Object.entries(allDeps).filter(([name]) => name.startsWith("@sigx/") || name === "sigx").map(([name, version]) => `${name}@${version}`);
|
|
84
|
+
if (sigxPkgs.length > 0) {
|
|
85
|
+
console.log(` Sigx packages:`);
|
|
86
|
+
for (const p of sigxPkgs) console.log(` - ${p}`);
|
|
87
|
+
}
|
|
88
|
+
} catch {}
|
|
89
|
+
else console.log(" Project: (no package.json found)");
|
|
90
|
+
const detected = [
|
|
91
|
+
{
|
|
92
|
+
file: "sigx.lynx.config.ts",
|
|
93
|
+
label: "Lynx"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
file: "sigx.lynx.config.js",
|
|
97
|
+
label: "Lynx"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
file: "lynx.config.ts",
|
|
101
|
+
label: "Lynx (rspeedy)"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
file: "lynx.config.js",
|
|
105
|
+
label: "Lynx (rspeedy)"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
file: "ssg.config.ts",
|
|
109
|
+
label: "SSG"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
file: "vite.config.ts",
|
|
113
|
+
label: "Vite"
|
|
114
|
+
}
|
|
115
|
+
].filter((c) => existsSync(join(cwd, c.file)));
|
|
116
|
+
if (detected.length > 0) {
|
|
117
|
+
console.log(` Config files:`);
|
|
118
|
+
for (const c of detected) console.log(` - ${c.file} (${c.label})`);
|
|
119
|
+
}
|
|
120
|
+
if (detected.some((c) => c.label.includes("Lynx"))) {
|
|
121
|
+
console.log("");
|
|
122
|
+
console.log(" \x1B[1mLynx Environment\x1B[0m");
|
|
123
|
+
const rspeedyVer = getVersion("npx rspeedy --version 2>&1");
|
|
124
|
+
if (rspeedyVer) console.log(` rspeedy: v${rspeedyVer.trim()}`);
|
|
125
|
+
const androidHome = process.env.ANDROID_HOME || process.env.ANDROID_SDK_ROOT;
|
|
126
|
+
if (androidHome) console.log(` Android SDK: ${androidHome}`);
|
|
127
|
+
const javaVer = getVersion("java -version 2>&1");
|
|
128
|
+
if (javaVer) {
|
|
129
|
+
const match = javaVer.match(/version "([^"]+)"/);
|
|
130
|
+
if (match) console.log(` JDK: ${match[1]}`);
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
const adbVer = getVersion("adb version");
|
|
134
|
+
if (adbVer) {
|
|
135
|
+
const verMatch = adbVer.match(/version ([\d.]+)/);
|
|
136
|
+
console.log(` ADB: ${verMatch ? `v${verMatch[1]}` : "available"}`);
|
|
137
|
+
const devices = (0, import___vite_browser_external.execSync)("adb devices -l", {
|
|
138
|
+
stdio: "pipe",
|
|
139
|
+
encoding: "utf-8"
|
|
140
|
+
}).split("\n").slice(1).filter((l) => l.trim().length > 0).map((l) => {
|
|
141
|
+
const modelMatch = l.match(/model:(\S+)/);
|
|
142
|
+
return modelMatch ? modelMatch[1].replace(/_/g, " ") : l.split(/\s+/)[0];
|
|
143
|
+
});
|
|
144
|
+
if (devices.length > 0) console.log(` Devices: ${devices.join(", ")}`);
|
|
145
|
+
}
|
|
146
|
+
} catch {}
|
|
147
|
+
if (process.platform === "darwin") {
|
|
148
|
+
const xcodeVer = getVersion("xcodebuild -version 2>/dev/null");
|
|
149
|
+
if (xcodeVer) console.log(` Xcode: ${xcodeVer.split("\n")[0]}`);
|
|
150
|
+
const podVer = getVersion("pod --version");
|
|
151
|
+
if (podVer) console.log(` CocoaPods: v${podVer}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
console.log("");
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
//#endregion
|
|
158
|
+
//#region src/utils/logger.ts
|
|
159
|
+
function createLogger(prefix = "sigx") {
|
|
160
|
+
return {
|
|
161
|
+
log: (msg) => console.log(`[${prefix}] ${msg}`),
|
|
162
|
+
warn: (msg) => console.warn(`[${prefix}] WARN: ${msg}`),
|
|
163
|
+
error: (msg) => console.error(`[${prefix}] ERROR: ${msg}`)
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
//#endregion
|
|
167
|
+
//#region src/cli.ts
|
|
168
|
+
/**
|
|
169
|
+
* sigx CLI — unified command-line tool for SignalX projects.
|
|
170
|
+
*
|
|
171
|
+
* Core commands (always available):
|
|
172
|
+
* sigx create — scaffold a new project
|
|
173
|
+
* sigx info — print environment info
|
|
174
|
+
*
|
|
175
|
+
* Plugin commands (auto-discovered from installed packages):
|
|
176
|
+
* sigx dev — start dev server
|
|
177
|
+
* sigx build — production build
|
|
178
|
+
* sigx preview — preview build (SSG)
|
|
179
|
+
* sigx prebuild — generate native project files (Lynx)
|
|
180
|
+
* sigx run:android / run:ios — build + launch on device (Lynx)
|
|
181
|
+
*/
|
|
182
|
+
var __dirname = dirname(fileURLToPath(import.meta.url));
|
|
183
|
+
var pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf-8"));
|
|
184
|
+
var logger = createLogger();
|
|
185
|
+
function wrapPluginCommand(cmd) {
|
|
186
|
+
return defineCommand({
|
|
187
|
+
meta: { description: cmd.description },
|
|
188
|
+
args: cmd.args,
|
|
189
|
+
async run({ args }) {
|
|
190
|
+
await cmd.run({
|
|
191
|
+
cwd: process.cwd(),
|
|
192
|
+
args,
|
|
193
|
+
logger
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
async function main() {
|
|
199
|
+
const plugins = await discoverPlugins(process.cwd());
|
|
200
|
+
const subCommands = { info: infoCommand };
|
|
201
|
+
subCommands.create = defineCommand({
|
|
202
|
+
meta: {
|
|
203
|
+
name: "create",
|
|
204
|
+
description: "Scaffold a new SignalX project"
|
|
205
|
+
},
|
|
206
|
+
async run() {
|
|
207
|
+
const { runCreate } = await import("./commands/create.js");
|
|
208
|
+
await runCreate();
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
for (const plugin of plugins) for (const [name, cmd] of Object.entries(plugin.commands)) {
|
|
212
|
+
if (subCommands[name]) logger.warn(`Plugin "${plugin.name}" overrides command "${name}"`);
|
|
213
|
+
subCommands[name] = wrapPluginCommand(cmd);
|
|
214
|
+
}
|
|
215
|
+
await runMain(defineCommand({
|
|
216
|
+
meta: {
|
|
217
|
+
name: "sigx",
|
|
218
|
+
version: pkg.version,
|
|
219
|
+
description: "SignalX CLI"
|
|
220
|
+
},
|
|
221
|
+
subCommands
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
main().catch((err) => {
|
|
225
|
+
logger.error(err.message || String(err));
|
|
226
|
+
process.exit(1);
|
|
227
|
+
});
|
|
228
|
+
//#endregion
|
|
229
|
+
|
|
230
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","names":[],"sources":["../src/discover.ts","../__vite-browser-external","../src/commands/info.ts","../src/utils/logger.ts","../src/cli.ts"],"sourcesContent":["/**\n * Auto-discover sigx CLI plugins from the project's dependencies.\n *\n * Scans the project's package.json for dependencies that declare\n * a `\"sigx-cli\": { \"plugin\": \"./path/to/plugin.js\" }` field.\n * Loads each plugin and calls `detect(cwd)` to check if it applies.\n */\n\nimport { readFileSync, existsSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { SigxPlugin } from './plugin.js';\n\ninterface DepPackageJson {\n 'sigx-cli'?: {\n plugin: string;\n };\n}\n\nexport async function discoverPlugins(cwd: string): Promise<SigxPlugin[]> {\n const pkgPath = join(cwd, 'package.json');\n if (!existsSync(pkgPath)) return [];\n\n let pkg: Record<string, unknown>;\n try {\n pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n } catch {\n return [];\n }\n\n const allDeps: Record<string, string> = {\n ...(pkg.dependencies as Record<string, string> | undefined),\n ...(pkg.devDependencies as Record<string, string> | undefined),\n };\n\n const plugins: SigxPlugin[] = [];\n\n for (const depName of Object.keys(allDeps)) {\n try {\n const depPkgPath = join(cwd, 'node_modules', depName, 'package.json');\n if (!existsSync(depPkgPath)) continue;\n\n const depPkg: DepPackageJson = JSON.parse(readFileSync(depPkgPath, 'utf-8'));\n const pluginField = depPkg['sigx-cli'];\n if (!pluginField?.plugin) continue;\n\n const pluginPath = join(cwd, 'node_modules', depName, pluginField.plugin);\n if (!existsSync(pluginPath)) continue;\n\n const mod = await import(pathToFileURL(pluginPath).href);\n const plugin: SigxPlugin = mod.default || mod;\n\n if (typeof plugin.detect === 'function' && plugin.detect(cwd)) {\n plugins.push(plugin);\n }\n } catch {\n // Not a valid plugin or failed to load — skip silently\n }\n }\n\n return plugins;\n}\n","module.exports = {}","import { defineCommand } from 'citty';\nimport { readFileSync, existsSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { execSync } from 'node:child_process';\n\nfunction getVersion(cmd: string): string | null {\n try {\n return execSync(cmd, { stdio: 'pipe', encoding: 'utf-8' }).trim();\n } catch {\n return null;\n }\n}\n\nexport const infoCommand = defineCommand({\n meta: {\n name: 'info',\n description: 'Print environment and project info',\n },\n run() {\n const cwd = process.cwd();\n\n console.log('\\n \\x1b[1msigx environment info\\x1b[0m\\n');\n console.log(` Platform: ${process.platform} ${process.arch}`);\n console.log(` Node: ${process.version}`);\n\n // Package manager\n const pnpmVer = getVersion('pnpm --version');\n if (pnpmVer) console.log(` pnpm: v${pnpmVer}`);\n else {\n const npmVer = getVersion('npm --version');\n if (npmVer) console.log(` npm: v${npmVer}`);\n }\n\n // Project info\n const pkgPath = join(cwd, 'package.json');\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n console.log(` Project: ${pkg.name || '(unnamed)'} v${pkg.version || '0.0.0'}`);\n\n // Detect sigx packages\n const allDeps: Record<string, string> = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n };\n const sigxPkgs = Object.entries(allDeps)\n .filter(([name]) => name.startsWith('@sigx/') || name === 'sigx')\n .map(([name, version]) => `${name}@${version}`);\n\n if (sigxPkgs.length > 0) {\n console.log(` Sigx packages:`);\n for (const p of sigxPkgs) {\n console.log(` - ${p}`);\n }\n }\n } catch {\n // ignore parse errors\n }\n } else {\n console.log(' Project: (no package.json found)');\n }\n\n // Config files\n const configs = [\n { file: 'sigx.lynx.config.ts', label: 'Lynx' },\n { file: 'sigx.lynx.config.js', label: 'Lynx' },\n { file: 'lynx.config.ts', label: 'Lynx (rspeedy)' },\n { file: 'lynx.config.js', label: 'Lynx (rspeedy)' },\n { file: 'ssg.config.ts', label: 'SSG' },\n { file: 'vite.config.ts', label: 'Vite' },\n ];\n const detected = configs.filter(c => existsSync(join(cwd, c.file)));\n if (detected.length > 0) {\n console.log(` Config files:`);\n for (const c of detected) {\n console.log(` - ${c.file} (${c.label})`);\n }\n }\n\n // Lynx-specific info\n const isLynx = detected.some(c => c.label.includes('Lynx'));\n if (isLynx) {\n console.log('');\n console.log(' \\x1b[1mLynx Environment\\x1b[0m');\n\n // rspeedy\n const rspeedyVer = getVersion('npx rspeedy --version 2>&1');\n if (rspeedyVer) console.log(` rspeedy: v${rspeedyVer.trim()}`);\n\n // Android SDK\n const androidHome = process.env.ANDROID_HOME || process.env.ANDROID_SDK_ROOT;\n if (androidHome) {\n console.log(` Android SDK: ${androidHome}`);\n }\n\n // JDK\n const javaVer = getVersion('java -version 2>&1');\n if (javaVer) {\n const match = javaVer.match(/version \"([^\"]+)\"/);\n if (match) console.log(` JDK: ${match[1]}`);\n }\n\n // ADB + devices\n try {\n const adbVer = getVersion('adb version');\n if (adbVer) {\n const verMatch = adbVer.match(/version ([\\d.]+)/);\n console.log(` ADB: ${verMatch ? `v${verMatch[1]}` : 'available'}`);\n\n const devOutput = execSync('adb devices -l', { stdio: 'pipe', encoding: 'utf-8' });\n const devices = devOutput.split('\\n')\n .slice(1)\n .filter(l => l.trim().length > 0)\n .map(l => {\n const modelMatch = l.match(/model:(\\S+)/);\n return modelMatch ? modelMatch[1].replace(/_/g, ' ') : l.split(/\\s+/)[0];\n });\n\n if (devices.length > 0) {\n console.log(` Devices: ${devices.join(', ')}`);\n }\n }\n } catch {\n // ADB not available\n }\n\n // Xcode (macOS only)\n if (process.platform === 'darwin') {\n const xcodeVer = getVersion('xcodebuild -version 2>/dev/null');\n if (xcodeVer) console.log(` Xcode: ${xcodeVer.split('\\n')[0]}`);\n\n const podVer = getVersion('pod --version');\n if (podVer) console.log(` CocoaPods: v${podVer}`);\n }\n }\n\n console.log('');\n },\n});\n","import type { Logger } from '../plugin.js';\n\nexport function createLogger(prefix = 'sigx'): Logger {\n return {\n log: (msg: string) => console.log(`[${prefix}] ${msg}`),\n warn: (msg: string) => console.warn(`[${prefix}] WARN: ${msg}`),\n error: (msg: string) => console.error(`[${prefix}] ERROR: ${msg}`),\n };\n}\n","#!/usr/bin/env node\n\n/**\n * sigx CLI — unified command-line tool for SignalX projects.\n *\n * Core commands (always available):\n * sigx create — scaffold a new project\n * sigx info — print environment info\n *\n * Plugin commands (auto-discovered from installed packages):\n * sigx dev — start dev server\n * sigx build — production build\n * sigx preview — preview build (SSG)\n * sigx prebuild — generate native project files (Lynx)\n * sigx run:android / run:ios — build + launch on device (Lynx)\n */\n\nimport { defineCommand, runMain } from 'citty';\nimport { readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { discoverPlugins } from './discover.js';\nimport { infoCommand } from './commands/info.js';\nimport { createLogger } from './utils/logger.js';\nimport type { PluginCommand } from './plugin.js';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));\nconst logger = createLogger();\n\nfunction wrapPluginCommand(cmd: PluginCommand) {\n return defineCommand({\n meta: { description: cmd.description },\n args: cmd.args as any,\n async run({ args }) {\n await cmd.run({ cwd: process.cwd(), args, logger });\n },\n });\n}\n\nasync function main() {\n const cwd = process.cwd();\n const plugins = await discoverPlugins(cwd);\n\n // Build subcommand map: core + plugin commands\n const subCommands: Record<string, ReturnType<typeof defineCommand>> = {\n info: infoCommand,\n };\n\n // Lazy-load create command only when needed (it pulls in @sigx/terminal)\n subCommands.create = defineCommand({\n meta: { name: 'create', description: 'Scaffold a new SignalX project' },\n async run() {\n const { runCreate } = await import('./commands/create.js');\n await runCreate();\n },\n });\n\n // Register plugin commands\n for (const plugin of plugins) {\n for (const [name, cmd] of Object.entries(plugin.commands)) {\n if (subCommands[name]) {\n // Command conflict — last plugin wins, but warn\n logger.warn(`Plugin \"${plugin.name}\" overrides command \"${name}\"`);\n }\n subCommands[name] = wrapPluginCommand(cmd);\n }\n }\n\n const mainCommand = defineCommand({\n meta: {\n name: 'sigx',\n version: pkg.version,\n description: 'SignalX CLI',\n },\n subCommands,\n });\n\n await runMain(mainCommand);\n}\n\nmain().catch((err) => {\n logger.error(err.message || String(err));\n process.exit(1);\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function runCreate(): void;
|