@lingxia/cli 0.0.9 → 0.1.3
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/bin/lingxia.js +207 -32
- package/dist/builder/commands/build.d.ts +1 -1
- package/dist/builder/commands/build.d.ts.map +1 -1
- package/dist/builder/commands/build.js +138 -103
- package/dist/builder/commands/build.js.map +1 -1
- package/dist/builder/core/builders/logic.d.ts +3 -3
- package/dist/builder/core/builders/logic.d.ts.map +1 -1
- package/dist/builder/core/builders/logic.js +55 -46
- package/dist/builder/core/builders/logic.js.map +1 -1
- package/dist/builder/core/builders/page-functions.d.ts.map +1 -1
- package/dist/builder/core/builders/page-functions.js +43 -35
- package/dist/builder/core/builders/page-functions.js.map +1 -1
- package/dist/builder/core/builders/page-path-injector.js +27 -27
- package/dist/builder/core/builders/page-path-injector.js.map +1 -1
- package/dist/builder/core/builders/page-types.d.ts +22 -0
- package/dist/builder/core/builders/page-types.d.ts.map +1 -0
- package/dist/builder/core/builders/page-types.js +374 -0
- package/dist/builder/core/builders/page-types.js.map +1 -0
- package/dist/builder/core/builders/page.d.ts +5 -4
- package/dist/builder/core/builders/page.d.ts.map +1 -1
- package/dist/builder/core/builders/page.js +54 -52
- package/dist/builder/core/builders/page.js.map +1 -1
- package/dist/builder/core/builders/view-validator.d.ts +9 -0
- package/dist/builder/core/builders/view-validator.d.ts.map +1 -0
- package/dist/builder/core/builders/view-validator.js +58 -0
- package/dist/builder/core/builders/view-validator.js.map +1 -0
- package/dist/builder/core/builders/view.d.ts +40 -3
- package/dist/builder/core/builders/view.d.ts.map +1 -1
- package/dist/builder/core/builders/view.js +406 -55
- package/dist/builder/core/builders/view.js.map +1 -1
- package/dist/builder/core/config/alias-config.d.ts +1 -1
- package/dist/builder/core/config/alias-config.d.ts.map +1 -1
- package/dist/builder/core/config/alias-config.js +8 -8
- package/dist/builder/core/config/alias-config.js.map +1 -1
- package/dist/builder/core/config/framework.d.ts +1 -1
- package/dist/builder/core/config/framework.d.ts.map +1 -1
- package/dist/builder/core/config/framework.js +14 -11
- package/dist/builder/core/config/framework.js.map +1 -1
- package/dist/builder/core/config/lxapp-config.d.ts +74 -0
- package/dist/builder/core/config/lxapp-config.d.ts.map +1 -0
- package/dist/builder/core/config/lxapp-config.js +195 -0
- package/dist/builder/core/config/lxapp-config.js.map +1 -0
- package/dist/builder/core/config/view-build-schema.d.ts +2 -2
- package/dist/builder/core/config/view-config.d.ts +3 -3
- package/dist/builder/core/config/view-config.d.ts.map +1 -1
- package/dist/builder/core/config/view-config.js +16 -16
- package/dist/builder/core/config/view-config.js.map +1 -1
- package/dist/builder/core/config.d.ts +1 -1
- package/dist/builder/core/config.js +11 -11
- package/dist/builder/core/constants/source-dirs.d.ts +1 -1
- package/dist/builder/core/constants/source-dirs.js +9 -9
- package/dist/builder/core/constants/source-dirs.js.map +1 -1
- package/dist/builder/core/constants/static-dirs.d.ts +1 -1
- package/dist/builder/core/constants/static-dirs.d.ts.map +1 -1
- package/dist/builder/core/constants/static-dirs.js +11 -11
- package/dist/builder/core/constants/static-dirs.js.map +1 -1
- package/dist/builder/core/frameworks/base.d.ts +1 -1
- package/dist/builder/core/frameworks/base.d.ts.map +1 -1
- package/dist/builder/core/frameworks/base.js +13 -11
- package/dist/builder/core/frameworks/base.js.map +1 -1
- package/dist/builder/core/frameworks/factory.d.ts +1 -1
- package/dist/builder/core/frameworks/factory.d.ts.map +1 -1
- package/dist/builder/core/frameworks/factory.js +9 -9
- package/dist/builder/core/frameworks/factory.js.map +1 -1
- package/dist/builder/core/frameworks/html.d.ts +2 -2
- package/dist/builder/core/frameworks/html.d.ts.map +1 -1
- package/dist/builder/core/frameworks/html.js +10 -10
- package/dist/builder/core/frameworks/html.js.map +1 -1
- package/dist/builder/core/frameworks/react.d.ts +3 -3
- package/dist/builder/core/frameworks/react.d.ts.map +1 -1
- package/dist/builder/core/frameworks/react.js +45 -43
- package/dist/builder/core/frameworks/react.js.map +1 -1
- package/dist/builder/core/frameworks/templates.d.ts +1 -1
- package/dist/builder/core/frameworks/templates.d.ts.map +1 -1
- package/dist/builder/core/frameworks/templates.js +1 -1
- package/dist/builder/core/frameworks/templates.js.map +1 -1
- package/dist/builder/core/frameworks/vue.d.ts +3 -3
- package/dist/builder/core/frameworks/vue.d.ts.map +1 -1
- package/dist/builder/core/frameworks/vue.js +48 -43
- package/dist/builder/core/frameworks/vue.js.map +1 -1
- package/dist/builder/core/registry.d.ts.map +1 -1
- package/dist/builder/core/registry.js +34 -25
- package/dist/builder/core/registry.js.map +1 -1
- package/dist/builder/core/template.d.ts +1 -1
- package/dist/builder/core/template.d.ts.map +1 -1
- package/dist/builder/core/template.js +19 -14
- package/dist/builder/core/template.js.map +1 -1
- package/dist/builder/core/templates/embedded.d.ts +3 -3
- package/dist/builder/core/templates/embedded.d.ts.map +1 -1
- package/dist/builder/core/templates/embedded.js +62 -31
- package/dist/builder/core/templates/embedded.js.map +1 -1
- package/dist/builder/core/type-generator.d.ts +17 -0
- package/dist/builder/core/type-generator.d.ts.map +1 -0
- package/dist/builder/core/type-generator.js +172 -0
- package/dist/builder/core/type-generator.js.map +1 -0
- package/dist/builder/core/utils/file.js +4 -4
- package/dist/builder/core/utils/incremental.d.ts +59 -0
- package/dist/builder/core/utils/incremental.d.ts.map +1 -0
- package/dist/builder/core/utils/incremental.js +177 -0
- package/dist/builder/core/utils/incremental.js.map +1 -0
- package/dist/builder/core/utils/page.d.ts +12 -2
- package/dist/builder/core/utils/page.d.ts.map +1 -1
- package/dist/builder/core/utils/page.js +63 -8
- package/dist/builder/core/utils/page.js.map +1 -1
- package/dist/builder/index.d.ts +1 -1
- package/dist/builder/index.js +1 -1
- package/dist/builder/types/index.d.ts +7 -6
- package/dist/builder/types/index.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -16
- package/dist/index.js.map +1 -1
- package/package.json +7 -6
- package/scripts/install.cjs +35 -15
- package/templates/AppIcon.png +0 -0
- package/templates/android-native/app/src/main/java/MainActivity.kt +2 -2
- package/templates/android-native/app/src/main/res/values/strings.xml +1 -1
- package/templates/android-native/settings.gradle.kts +4 -0
- package/templates/harmony-native/AppScope/app.json5 +10 -0
- package/templates/harmony-native/AppScope/resources/base/element/string.json +8 -0
- package/templates/harmony-native/build-profile.json5 +41 -0
- package/templates/harmony-native/entry/build-profile.json5 +8 -0
- package/templates/harmony-native/entry/hvigorfile.ts +6 -0
- package/templates/harmony-native/entry/oh-package.json5 +11 -0
- package/templates/harmony-native/entry/src/main/ets/entryability/EntryAbility.ets +38 -0
- package/templates/harmony-native/entry/src/main/ets/pages/Index.ets +15 -0
- package/templates/harmony-native/entry/src/main/module.json5 +38 -0
- package/templates/harmony-native/entry/src/main/resources/base/element/color.json +8 -0
- package/templates/harmony-native/entry/src/main/resources/base/element/string.json +16 -0
- package/templates/harmony-native/entry/src/main/resources/base/profile/main_pages.json +5 -0
- package/templates/harmony-native/entry/src/main/resources/dark/element/color.json +8 -0
- package/templates/harmony-native/hvigor/hvigor-config.json5 +13 -0
- package/templates/harmony-native/hvigorfile.ts +6 -0
- package/templates/harmony-native/oh-package.json5 +10 -0
- package/templates/ios-native/App.entitlements +10 -0
- package/templates/ios-native/Info.plist +8 -0
- package/templates/ios-native/Package.swift +31 -0
- package/templates/ios-native/Sources/App.swift +44 -0
- package/templates/lxapp-create/html/global.d.ts +1 -0
- package/templates/lxapp-create/html/lxapp.config.ts +5 -0
- package/templates/lxapp-create/html/lxapp.json +8 -0
- package/templates/lxapp-create/html/lxapp.ts +8 -0
- package/templates/lxapp-create/html/package.json +20 -0
- package/templates/lxapp-create/html/pages/home/index.html +32 -0
- package/templates/lxapp-create/html/pages/home/index.json +3 -0
- package/templates/lxapp-create/html/pages/home/index.ts +14 -0
- package/templates/lxapp-create/html/tsconfig.json +13 -0
- package/templates/lxapp-create/html/view/home.ts +19 -0
- package/templates/lxapp-create/react/app.css +20 -0
- package/templates/lxapp-create/react/lxapp.config.ts +8 -0
- package/templates/lxapp-create/react/lxapp.json +1 -1
- package/templates/lxapp-create/react/package.json +2 -0
- package/templates/lxapp-create/react/pages/home/index.json +1 -1
- package/templates/lxapp-create/react/pages/home/index.ts +8 -3
- package/templates/lxapp-create/react/pages/home/index.tsx +113 -42
- package/templates/lxapp-create/react/tsconfig.json +5 -2
- package/templates/lxapp-create/vue/app.css +20 -0
- package/templates/lxapp-create/vue/lxapp.config.ts +8 -0
- package/templates/lxapp-create/vue/lxapp.json +1 -1
- package/templates/lxapp-create/vue/package.json +2 -0
- package/templates/lxapp-create/vue/pages/home/index.json +1 -1
- package/templates/lxapp-create/vue/pages/home/index.ts +8 -3
- package/templates/lxapp-create/vue/pages/home/index.vue +124 -37
- package/templates/lxapp-create/vue/tsconfig.json +5 -2
- package/templates/macos-native/Info.plist +40 -0
- package/templates/macos-native/Package.swift +30 -0
- package/templates/macos-native/Sources/main.swift +23 -0
- package/templates/rust-lib/Cargo.toml +16 -1
- package/templates/rust-lib/README.md +1 -1
- package/templates/rust-lib/src/lib.rs +39 -1
- package/vendor/lingxia +0 -0
- package/templates/lxapp-create/react/lxapp.config.json +0 -8
- package/templates/lxapp-create/react/public/.gitkeep +0 -0
- package/templates/lxapp-create/vue/lxapp.config.json +0 -8
- package/templates/lxapp-create/vue/public/.gitkeep +0 -0
package/bin/lingxia.js
CHANGED
|
@@ -1,22 +1,160 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { spawnSync } from "child_process";
|
|
4
|
-
import { existsSync } from "fs";
|
|
3
|
+
import { spawn, spawnSync } from "child_process";
|
|
4
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
5
5
|
import { createRequire } from "module";
|
|
6
6
|
import { dirname, resolve } from "path";
|
|
7
7
|
import { fileURLToPath, pathToFileURL } from "url";
|
|
8
|
-
import
|
|
8
|
+
import { homedir } from "os";
|
|
9
|
+
import { createInterface } from "readline";
|
|
9
10
|
|
|
10
11
|
const __filename = fileURLToPath(import.meta.url);
|
|
11
12
|
const __dirname = dirname(__filename);
|
|
12
13
|
const binName = process.platform === "win32" ? "lingxia.exe" : "lingxia";
|
|
13
14
|
const require = createRequire(import.meta.url);
|
|
14
15
|
const pkg = require("../package.json");
|
|
15
|
-
|
|
16
|
-
// Check for updates (runs in background, cached for 1 day)
|
|
17
|
-
updateNotifier({ pkg }).notify();
|
|
18
16
|
const jsCli = resolve(__dirname, "../dist/index.js");
|
|
19
17
|
|
|
18
|
+
// Cross-platform config directory
|
|
19
|
+
function getConfigDir() {
|
|
20
|
+
if (process.platform === "win32") {
|
|
21
|
+
// Windows: use APPDATA
|
|
22
|
+
return resolve(
|
|
23
|
+
process.env.APPDATA || resolve(homedir(), "AppData", "Roaming"),
|
|
24
|
+
"lingxia",
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
// Linux/macOS: prefer XDG_CONFIG_HOME, fallback to ~/.config
|
|
28
|
+
const xdgConfig =
|
|
29
|
+
process.env.XDG_CONFIG_HOME || resolve(homedir(), ".config");
|
|
30
|
+
return resolve(xdgConfig, "lingxia");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Simple version check with cache
|
|
34
|
+
const CACHE_FILE = resolve(getConfigDir(), "update-check.json");
|
|
35
|
+
const CHECK_INTERVAL = 24 * 60 * 60 * 1000; // 24 hours
|
|
36
|
+
let updateCheckPromise = null;
|
|
37
|
+
|
|
38
|
+
// Normalize version string: remove 'v' prefix and pre-release suffixes
|
|
39
|
+
function normalizeVersion(version) {
|
|
40
|
+
if (!version) return "0.0.0";
|
|
41
|
+
return version
|
|
42
|
+
.replace(/^v/i, "") // remove 'v' prefix
|
|
43
|
+
.replace(/[-+].*$/, "") // remove -beta.1, +build, etc.
|
|
44
|
+
.trim();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function isNewerVersion(current, latest) {
|
|
48
|
+
const cur = normalizeVersion(current)
|
|
49
|
+
.split(".")
|
|
50
|
+
.map((n) => parseInt(n, 10) || 0);
|
|
51
|
+
const lat = normalizeVersion(latest)
|
|
52
|
+
.split(".")
|
|
53
|
+
.map((n) => parseInt(n, 10) || 0);
|
|
54
|
+
|
|
55
|
+
for (let i = 0; i < 3; i++) {
|
|
56
|
+
const c = cur[i] || 0;
|
|
57
|
+
const l = lat[i] || 0;
|
|
58
|
+
if (l > c) return true;
|
|
59
|
+
if (l < c) return false;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function promptUser(question) {
|
|
65
|
+
return new Promise((resolve) => {
|
|
66
|
+
const rl = createInterface({
|
|
67
|
+
input: process.stdin,
|
|
68
|
+
output: process.stdout,
|
|
69
|
+
});
|
|
70
|
+
rl.question(question, (answer) => {
|
|
71
|
+
rl.close();
|
|
72
|
+
resolve(answer.trim().toLowerCase());
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function performUpdate() {
|
|
78
|
+
console.log("\x1b[36m Updating @lingxia/cli...\x1b[0m\n");
|
|
79
|
+
const result = spawnSync("npm", ["install", "-g", "@lingxia/cli"], {
|
|
80
|
+
stdio: "inherit",
|
|
81
|
+
shell: true,
|
|
82
|
+
});
|
|
83
|
+
if (result.status === 0) {
|
|
84
|
+
console.log(
|
|
85
|
+
"\n\x1b[32m Updated successfully! Please re-run your command.\x1b[0m\n",
|
|
86
|
+
);
|
|
87
|
+
process.exit(0);
|
|
88
|
+
} else {
|
|
89
|
+
console.log(
|
|
90
|
+
"\n\x1b[31m Update failed. Try manually: npm install -g @lingxia/cli\x1b[0m\n",
|
|
91
|
+
);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async function checkForUpdates() {
|
|
97
|
+
try {
|
|
98
|
+
// Read cache
|
|
99
|
+
let cache = { lastCheck: 0, latestVersion: null };
|
|
100
|
+
try {
|
|
101
|
+
cache = JSON.parse(readFileSync(CACHE_FILE, "utf-8"));
|
|
102
|
+
} catch {}
|
|
103
|
+
|
|
104
|
+
const now = Date.now();
|
|
105
|
+
const shouldCheck = now - cache.lastCheck > CHECK_INTERVAL;
|
|
106
|
+
|
|
107
|
+
// Prompt for update if cached version is newer
|
|
108
|
+
if (
|
|
109
|
+
cache.latestVersion &&
|
|
110
|
+
isNewerVersion(pkg.version, cache.latestVersion)
|
|
111
|
+
) {
|
|
112
|
+
// Only prompt if running in interactive terminal
|
|
113
|
+
if (process.stdin.isTTY && process.stdout.isTTY) {
|
|
114
|
+
console.log();
|
|
115
|
+
console.log(
|
|
116
|
+
`\x1b[33m Update available: ${pkg.version} → ${cache.latestVersion}\x1b[0m`,
|
|
117
|
+
);
|
|
118
|
+
const answer = await promptUser(" Update now? [Y/n] ");
|
|
119
|
+
if (answer === "" || answer === "y" || answer === "yes") {
|
|
120
|
+
performUpdate();
|
|
121
|
+
return; // Exit after update
|
|
122
|
+
}
|
|
123
|
+
console.log();
|
|
124
|
+
} else {
|
|
125
|
+
// Non-interactive: just show message
|
|
126
|
+
console.log();
|
|
127
|
+
console.log(
|
|
128
|
+
`\x1b[33m Update available: ${pkg.version} → ${cache.latestVersion}\x1b[0m`,
|
|
129
|
+
);
|
|
130
|
+
console.log(`\x1b[33m Run: npm install -g @lingxia/cli\x1b[0m`);
|
|
131
|
+
console.log();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Background check - store promise so we can wait for it before exit
|
|
136
|
+
if (shouldCheck) {
|
|
137
|
+
// Use encodeURIComponent for package name (handles @ and /)
|
|
138
|
+
const registryUrl = `https://registry.npmjs.org/${encodeURIComponent(pkg.name)}/latest`;
|
|
139
|
+
updateCheckPromise = fetch(registryUrl, {
|
|
140
|
+
signal: AbortSignal.timeout(3000), // 3 second timeout
|
|
141
|
+
})
|
|
142
|
+
.then((res) => res.json())
|
|
143
|
+
.then((data) => {
|
|
144
|
+
// Validate response before writing cache
|
|
145
|
+
if (data?.version && typeof data.version === "string") {
|
|
146
|
+
mkdirSync(dirname(CACHE_FILE), { recursive: true });
|
|
147
|
+
writeFileSync(
|
|
148
|
+
CACHE_FILE,
|
|
149
|
+
JSON.stringify({ lastCheck: now, latestVersion: data.version }),
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
})
|
|
153
|
+
.catch(() => {}); // Silently ignore errors
|
|
154
|
+
}
|
|
155
|
+
} catch {}
|
|
156
|
+
}
|
|
157
|
+
|
|
20
158
|
function findSubcommand(argv) {
|
|
21
159
|
for (const arg of argv) {
|
|
22
160
|
if (!arg.startsWith("-")) return arg;
|
|
@@ -26,9 +164,15 @@ function findSubcommand(argv) {
|
|
|
26
164
|
|
|
27
165
|
function isLxappProject(cwd) {
|
|
28
166
|
const hasLxapp = existsSync(resolve(cwd, "lxapp.json"));
|
|
29
|
-
|
|
167
|
+
// lxapp.config is optional now (supports .ts, .js, .json)
|
|
30
168
|
const hasHost = existsSync(resolve(cwd, "lingxia.config.json"));
|
|
31
|
-
return hasLxapp &&
|
|
169
|
+
return hasLxapp && !hasHost;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function isLxpluginProject(cwd) {
|
|
173
|
+
const hasPlugin = existsSync(resolve(cwd, "lxplugin.json"));
|
|
174
|
+
const hasHost = existsSync(resolve(cwd, "lingxia.config.json"));
|
|
175
|
+
return hasPlugin && !hasHost;
|
|
32
176
|
}
|
|
33
177
|
|
|
34
178
|
async function runJsCli(argv) {
|
|
@@ -37,10 +181,25 @@ async function runJsCli(argv) {
|
|
|
37
181
|
console.error(
|
|
38
182
|
"@lingxia/cli: LxApp JS CLI not found. Run npm install in @lingxia/cli.",
|
|
39
183
|
);
|
|
40
|
-
|
|
184
|
+
await exitAfterUpdateCheck(1);
|
|
185
|
+
return;
|
|
41
186
|
}
|
|
42
187
|
const { runCLI } = await import(pathToFileURL(jsCliPath).href);
|
|
43
188
|
await runCLI(argv);
|
|
189
|
+
// Wait for update check to complete before exiting
|
|
190
|
+
await waitForUpdateCheck();
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Helper to wait for background update check
|
|
194
|
+
async function waitForUpdateCheck() {
|
|
195
|
+
if (updateCheckPromise) {
|
|
196
|
+
await updateCheckPromise.catch(() => {});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
async function exitAfterUpdateCheck(code) {
|
|
201
|
+
await waitForUpdateCheck();
|
|
202
|
+
process.exit(code);
|
|
44
203
|
}
|
|
45
204
|
|
|
46
205
|
function runRust(argv) {
|
|
@@ -54,42 +213,58 @@ function runRust(argv) {
|
|
|
54
213
|
console.error(
|
|
55
214
|
`@lingxia/cli@${pkg.version}: Rust binary not found. Please reinstall the package.`,
|
|
56
215
|
);
|
|
57
|
-
|
|
216
|
+
void exitAfterUpdateCheck(1);
|
|
217
|
+
return;
|
|
58
218
|
}
|
|
59
219
|
|
|
60
220
|
if (!process.env.LINGXIA_JS_CLI && existsSync(jsCli)) {
|
|
61
221
|
process.env.LINGXIA_JS_CLI = jsCli;
|
|
62
222
|
}
|
|
63
223
|
if (!process.env.LINGXIA_TEMPLATES_DIR) {
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
];
|
|
68
|
-
for (const dir of candidates) {
|
|
69
|
-
if (existsSync(dir)) {
|
|
70
|
-
process.env.LINGXIA_TEMPLATES_DIR = dir;
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
224
|
+
const templates = resolve(__dirname, "../templates");
|
|
225
|
+
if (existsSync(templates)) {
|
|
226
|
+
process.env.LINGXIA_TEMPLATES_DIR = templates;
|
|
73
227
|
}
|
|
74
228
|
}
|
|
75
229
|
|
|
76
|
-
|
|
230
|
+
// Use spawn instead of spawnSync to allow background update check to complete
|
|
231
|
+
const child = spawn(resolvedRustBin, argv, {
|
|
77
232
|
stdio: "inherit",
|
|
78
233
|
});
|
|
79
|
-
|
|
234
|
+
|
|
235
|
+
// Handle spawn errors (binary not executable, permission denied, etc.)
|
|
236
|
+
child.on("error", (err) => {
|
|
237
|
+
console.error(`@lingxia/cli: Failed to start Rust binary: ${err.message}`);
|
|
238
|
+
void exitAfterUpdateCheck(1);
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
child.on("close", async (code) => {
|
|
242
|
+
// Wait for update check to complete before exiting
|
|
243
|
+
await waitForUpdateCheck();
|
|
244
|
+
process.exit(code ?? 1);
|
|
245
|
+
});
|
|
80
246
|
}
|
|
81
247
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const lxappProject = isLxappProject(process.cwd());
|
|
248
|
+
async function main() {
|
|
249
|
+
await checkForUpdates();
|
|
85
250
|
|
|
86
|
-
const
|
|
251
|
+
const argv = process.argv.slice(2);
|
|
252
|
+
const subcommand = findSubcommand(argv);
|
|
253
|
+
const lxappProject = isLxappProject(process.cwd());
|
|
254
|
+
const lxpluginProject = isLxpluginProject(process.cwd());
|
|
87
255
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
|
|
256
|
+
const useJs = subcommand === "build" && (lxappProject || lxpluginProject);
|
|
257
|
+
|
|
258
|
+
if (useJs) {
|
|
259
|
+
try {
|
|
260
|
+
await runJsCli(process.argv);
|
|
261
|
+
} catch (err) {
|
|
262
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
263
|
+
await exitAfterUpdateCheck(1);
|
|
264
|
+
}
|
|
265
|
+
} else {
|
|
266
|
+
runRust(argv);
|
|
267
|
+
}
|
|
95
268
|
}
|
|
269
|
+
|
|
270
|
+
main();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/builder/commands/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/builder/commands/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,mBAAmB,CAAC;AAW3E,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsMvE"}
|