@kvell007/embed-labs-cli 0.1.0-alpha.4 → 0.1.0-alpha.40
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/README.md +51 -3
- package/dist/index.js +1974 -83
- package/dist/index.js.map +1 -1
- package/dist/install-progress.d.ts +2 -0
- package/dist/install-progress.js +61 -0
- package/dist/install-progress.js.map +1 -0
- package/dist/local-toolchain.d.ts +135 -2
- package/dist/local-toolchain.js +1178 -66
- package/dist/local-toolchain.js.map +1 -1
- package/package.json +7 -3
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { arch, platform } from "node:os";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import { writeFileSync } from "node:fs";
|
|
5
|
+
const phase = process.argv[2] === "preinstall" ? "preinstall" : "postinstall";
|
|
6
|
+
const require = createRequire(import.meta.url);
|
|
7
|
+
function log(message) {
|
|
8
|
+
const line = `[Embed Labs] ${message}\n`;
|
|
9
|
+
process.stdout.write(line);
|
|
10
|
+
writeDirectConsole(line);
|
|
11
|
+
}
|
|
12
|
+
function writeDirectConsole(line) {
|
|
13
|
+
if (process.stdout.isTTY || process.env.EMBEDLABS_INSTALL_NO_TTY === "1") {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
writeFileSync(platform() === "win32" ? "\\\\.\\CONOUT$" : "/dev/tty", line, { flag: "a" });
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// npm may run lifecycle scripts without a controlling TTY in CI. Normal
|
|
21
|
+
// stdout is still useful when users pass --foreground-scripts.
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function nativePackageName() {
|
|
25
|
+
const key = `${platform()}-${arch()}`;
|
|
26
|
+
const packages = {
|
|
27
|
+
"darwin-arm64": "@embed-labs/local-bridge-darwin-arm64",
|
|
28
|
+
"linux-x64": "@embed-labs/local-bridge-linux-x64",
|
|
29
|
+
"linux-arm64": "@embed-labs/local-bridge-linux-arm64",
|
|
30
|
+
"win32-x64": "@embed-labs/local-bridge-win32-x64"
|
|
31
|
+
};
|
|
32
|
+
return packages[key];
|
|
33
|
+
}
|
|
34
|
+
function packageAvailable(name) {
|
|
35
|
+
try {
|
|
36
|
+
require.resolve(`${name}/package.json`);
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (phase === "preinstall") {
|
|
44
|
+
log(`开始安装 CLI,当前平台 ${platform()}-${arch()}。`);
|
|
45
|
+
log("npm 正在解析依赖和 native Local Bridge 包,这一步由 npm 控制。");
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const nativeName = nativePackageName();
|
|
49
|
+
if (nativeName && packageAvailable(nativeName)) {
|
|
50
|
+
log(`native Local Bridge 已安装:${nativeName}。`);
|
|
51
|
+
}
|
|
52
|
+
else if (nativeName) {
|
|
53
|
+
log(`native Local Bridge 未检测到:${nativeName}。如果使用了 --omit=optional,请重新安装且不要省略 optionalDependencies。`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
log(`当前平台 ${platform()}-${arch()} 暂无预编译 native Local Bridge。`);
|
|
57
|
+
}
|
|
58
|
+
log("npm 安装阶段不会下载开发板 SDK;需要 SDK 时执行 embedlabs local toolchain install,该命令会显示下载进度。");
|
|
59
|
+
log("下一步:embedlabs doctor;然后 embedlabs auth login --token <你的 API key>。");
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=install-progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-progress.js","sourceRoot":"","sources":["../src/install-progress.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;AAC9E,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,SAAS,GAAG,CAAC,OAAe;IAC1B,MAAM,IAAI,GAAG,gBAAgB,OAAO,IAAI,CAAC;IACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,EAAE,CAAC;QACzE,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,aAAa,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7F,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,+DAA+D;IACjE,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,GAAG,GAAG,GAAG,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;IACtC,MAAM,QAAQ,GAA2B;QACvC,cAAc,EAAE,uCAAuC;QACvD,WAAW,EAAE,oCAAoC;QACjD,aAAa,EAAE,sCAAsC;QACrD,WAAW,EAAE,oCAAoC;KAClD,CAAC;IACF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;IAC3B,GAAG,CAAC,iBAAiB,QAAQ,EAAE,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9C,GAAG,CAAC,gDAAgD,CAAC,CAAC;AACxD,CAAC;KAAM,CAAC;IACN,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,IAAI,UAAU,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,2BAA2B,UAAU,GAAG,CAAC,CAAC;IAChD,CAAC;SAAM,IAAI,UAAU,EAAE,CAAC;QACtB,GAAG,CAAC,4BAA4B,UAAU,yDAAyD,CAAC,CAAC;IACvG,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,QAAQ,QAAQ,EAAE,IAAI,IAAI,EAAE,6BAA6B,CAAC,CAAC;IACjE,CAAC;IACD,GAAG,CAAC,8EAA8E,CAAC,CAAC;IACpF,GAAG,CAAC,oEAAoE,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -3,9 +3,12 @@ export interface LocalToolchainAuthContext {
|
|
|
3
3
|
profile: string;
|
|
4
4
|
source?: string;
|
|
5
5
|
account_id?: string;
|
|
6
|
+
api_key_id?: string;
|
|
7
|
+
device_id?: string;
|
|
6
8
|
}
|
|
7
9
|
export interface LocalToolchainValidationResult {
|
|
8
10
|
ok: boolean;
|
|
11
|
+
mode: string;
|
|
9
12
|
host: {
|
|
10
13
|
platform: string;
|
|
11
14
|
arch: string;
|
|
@@ -14,6 +17,10 @@ export interface LocalToolchainValidationResult {
|
|
|
14
17
|
release_root: string;
|
|
15
18
|
checked_paths: LocalToolchainPathCheck[];
|
|
16
19
|
missing_paths: string[];
|
|
20
|
+
path_leaks: LocalToolchainPathLeak[];
|
|
21
|
+
missing_groups: string[];
|
|
22
|
+
repair_command?: string;
|
|
23
|
+
summary_for_user: string;
|
|
17
24
|
notes: string[];
|
|
18
25
|
}
|
|
19
26
|
export interface LocalToolchainPathCheck {
|
|
@@ -21,6 +28,11 @@ export interface LocalToolchainPathCheck {
|
|
|
21
28
|
path: string;
|
|
22
29
|
exists: boolean;
|
|
23
30
|
}
|
|
31
|
+
export interface LocalToolchainPathLeak {
|
|
32
|
+
label: string;
|
|
33
|
+
path: string;
|
|
34
|
+
forbidden: string;
|
|
35
|
+
}
|
|
24
36
|
export interface LocalCompileOptions {
|
|
25
37
|
boardId: string;
|
|
26
38
|
sourcePath: string;
|
|
@@ -80,6 +92,7 @@ export interface LocalToolchainPackageManifest {
|
|
|
80
92
|
family?: string;
|
|
81
93
|
board?: string;
|
|
82
94
|
variant?: string;
|
|
95
|
+
board_id?: string;
|
|
83
96
|
requires?: Array<{
|
|
84
97
|
id: string;
|
|
85
98
|
version: string;
|
|
@@ -100,11 +113,14 @@ export interface LocalToolchainLatestResult {
|
|
|
100
113
|
version: string;
|
|
101
114
|
metadata_root?: string;
|
|
102
115
|
packages: LocalToolchainPackageRef[];
|
|
116
|
+
download?: LocalToolchainDownloadPlan;
|
|
117
|
+
download_error?: string;
|
|
103
118
|
}
|
|
104
119
|
export interface LocalToolchainInstallOptions extends LocalToolchainLatestOptions {
|
|
105
120
|
sourceReleaseRoot?: string;
|
|
106
121
|
sourceUrl?: string;
|
|
107
122
|
installRoot?: string;
|
|
123
|
+
mode?: string;
|
|
108
124
|
force?: boolean;
|
|
109
125
|
}
|
|
110
126
|
export interface LocalToolchainInstallResult {
|
|
@@ -112,13 +128,18 @@ export interface LocalToolchainInstallResult {
|
|
|
112
128
|
version: string;
|
|
113
129
|
channel: string;
|
|
114
130
|
host: string;
|
|
131
|
+
mode: string;
|
|
115
132
|
install_root: string;
|
|
116
133
|
release_root: string;
|
|
117
134
|
registry_path: string;
|
|
118
135
|
source: {
|
|
119
|
-
kind: "directory" | "url";
|
|
136
|
+
kind: "directory" | "url" | "components";
|
|
120
137
|
value: string;
|
|
121
138
|
downloaded_path?: string;
|
|
139
|
+
mirror_kind?: string;
|
|
140
|
+
sha256?: string;
|
|
141
|
+
size_bytes?: number;
|
|
142
|
+
components?: LocalToolchainInstalledComponent[];
|
|
122
143
|
};
|
|
123
144
|
installed_paths: string[];
|
|
124
145
|
packages: LocalToolchainPackageRef[];
|
|
@@ -128,16 +149,128 @@ export interface LocalToolchainCurrentResult {
|
|
|
128
149
|
installed: boolean;
|
|
129
150
|
board_id: string;
|
|
130
151
|
version?: string;
|
|
152
|
+
mode?: string;
|
|
131
153
|
release_root?: string;
|
|
132
154
|
registry_path: string;
|
|
133
155
|
install_root: string;
|
|
134
156
|
channel?: string;
|
|
135
157
|
packages?: LocalToolchainPackageRef[];
|
|
136
158
|
}
|
|
159
|
+
export interface LocalToolchainListOptions extends LocalToolchainLatestOptions {
|
|
160
|
+
installRoot?: string;
|
|
161
|
+
installedOnly?: boolean;
|
|
162
|
+
}
|
|
163
|
+
export interface LocalToolchainEnvironmentRecord {
|
|
164
|
+
board_id: string;
|
|
165
|
+
package_id: string;
|
|
166
|
+
display_name: string;
|
|
167
|
+
family?: string;
|
|
168
|
+
variant?: string;
|
|
169
|
+
channel: string;
|
|
170
|
+
host: string;
|
|
171
|
+
status: "installed" | "available" | "update_available" | "unsupported_host";
|
|
172
|
+
supported_host: boolean;
|
|
173
|
+
unsupported_packages: string[];
|
|
174
|
+
install_modes: string[];
|
|
175
|
+
installed?: {
|
|
176
|
+
version?: string;
|
|
177
|
+
channel?: string;
|
|
178
|
+
mode?: string;
|
|
179
|
+
release_root?: string;
|
|
180
|
+
};
|
|
181
|
+
latest: {
|
|
182
|
+
version: string;
|
|
183
|
+
default_mode?: string;
|
|
184
|
+
source_url?: string;
|
|
185
|
+
manifest_url?: string;
|
|
186
|
+
component_count?: number;
|
|
187
|
+
download_error?: string;
|
|
188
|
+
};
|
|
189
|
+
packages: LocalToolchainPackageRef[];
|
|
190
|
+
components?: LocalToolchainEnvironmentComponent[];
|
|
191
|
+
install_command: string;
|
|
192
|
+
update_command: string;
|
|
193
|
+
notes: string[];
|
|
194
|
+
}
|
|
195
|
+
export interface LocalToolchainEnvironmentComponent {
|
|
196
|
+
id: string;
|
|
197
|
+
version: string;
|
|
198
|
+
role?: string;
|
|
199
|
+
install_modes?: string[];
|
|
200
|
+
file: string;
|
|
201
|
+
size_bytes: number;
|
|
202
|
+
source_url?: string;
|
|
203
|
+
}
|
|
204
|
+
export interface LocalToolchainListResult {
|
|
205
|
+
host: string;
|
|
206
|
+
channel: string;
|
|
207
|
+
metadata_source: "built_in" | "local_override";
|
|
208
|
+
metadata_root?: string;
|
|
209
|
+
install_root: string;
|
|
210
|
+
registry_path: string;
|
|
211
|
+
environments: LocalToolchainEnvironmentRecord[];
|
|
212
|
+
}
|
|
213
|
+
export interface LocalToolchainDownloadPlan {
|
|
214
|
+
channel_url: string;
|
|
215
|
+
manifest_url: string;
|
|
216
|
+
package_id: string;
|
|
217
|
+
version: string;
|
|
218
|
+
board_id: string;
|
|
219
|
+
host: string;
|
|
220
|
+
toolchain: string;
|
|
221
|
+
source_url?: string;
|
|
222
|
+
mirror_kind?: string;
|
|
223
|
+
archive?: {
|
|
224
|
+
file: string;
|
|
225
|
+
size_bytes: number;
|
|
226
|
+
sha256: string;
|
|
227
|
+
content_type?: string;
|
|
228
|
+
};
|
|
229
|
+
mirrors: LocalToolchainDownloadMirror[];
|
|
230
|
+
components?: LocalToolchainDownloadComponent[];
|
|
231
|
+
default_mode?: string;
|
|
232
|
+
}
|
|
233
|
+
export interface LocalToolchainDownloadMirror {
|
|
234
|
+
kind: string;
|
|
235
|
+
enabled: boolean;
|
|
236
|
+
url: string;
|
|
237
|
+
sha256?: string;
|
|
238
|
+
size_bytes?: number;
|
|
239
|
+
}
|
|
240
|
+
export interface LocalToolchainDownloadComponent {
|
|
241
|
+
id: string;
|
|
242
|
+
version: string;
|
|
243
|
+
role?: string;
|
|
244
|
+
install_modes?: string[];
|
|
245
|
+
archive: {
|
|
246
|
+
file: string;
|
|
247
|
+
size_bytes: number;
|
|
248
|
+
sha256: string;
|
|
249
|
+
content_type?: string;
|
|
250
|
+
};
|
|
251
|
+
source_url?: string;
|
|
252
|
+
mirror_kind?: string;
|
|
253
|
+
mirrors: LocalToolchainDownloadMirror[];
|
|
254
|
+
}
|
|
255
|
+
export interface LocalToolchainInstalledComponent {
|
|
256
|
+
id: string;
|
|
257
|
+
version: string;
|
|
258
|
+
role?: string;
|
|
259
|
+
archive_file: string;
|
|
260
|
+
mirror_kind?: string;
|
|
261
|
+
downloaded_path: string;
|
|
262
|
+
size_bytes: number;
|
|
263
|
+
sha256: string;
|
|
264
|
+
}
|
|
137
265
|
export declare function defaultLocalReleaseRoot(): string;
|
|
138
266
|
export declare function latestLocalToolchain(options?: LocalToolchainLatestOptions): Promise<LocalToolchainLatestResult>;
|
|
139
267
|
export declare function currentLocalToolchain(installRoot?: string, boardId?: string): Promise<LocalToolchainCurrentResult>;
|
|
268
|
+
export declare function listLocalToolchainEnvironments(options?: LocalToolchainListOptions): Promise<LocalToolchainListResult>;
|
|
140
269
|
export declare function installLocalToolchain(options?: LocalToolchainInstallOptions): Promise<LocalToolchainInstallResult>;
|
|
141
|
-
export declare function validateLocalToolchain(
|
|
270
|
+
export declare function validateLocalToolchain(input?: string | {
|
|
271
|
+
releaseRoot?: string;
|
|
272
|
+
mode?: string;
|
|
273
|
+
boardId?: string;
|
|
274
|
+
}): Promise<LocalToolchainValidationResult>;
|
|
142
275
|
export declare function compileTaishanPiSingleFile(options: LocalCompileOptions): Promise<LocalCompileResult>;
|
|
143
276
|
export declare function buildTaishanPiQtSmoke(options: LocalQtSmokeBuildOptions): Promise<LocalCompileResult>;
|