xs-dev 1.8.1 → 1.9.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/build/package.json +15 -19
- package/build/src/commands/build.js +1 -1
- package/build/src/commands/clean.js +1 -1
- package/build/src/commands/debug.js +1 -1
- package/build/src/commands/run.js +1 -1
- package/build/src/toolbox/scan/parse.js +1 -1
- package/build/src/toolbox/toolchains/pico.js +155 -97
- package/docs/src/content.config.ts +9 -0
- package/package.json +15 -19
- package/docs/src/content/config.ts +0 -7
package/build/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xs-dev",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "CLI for automating the setup and usage of Moddable XS tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "build/types/types.d.ts",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"xs-dev": "tsx src/cli.ts",
|
|
23
|
-
"xs-dev:debug": "
|
|
24
|
-
"format": "
|
|
25
|
-
"lint": "
|
|
23
|
+
"xs-dev:debug": "NODE_DEBUG=xs-dev* tsx --trace-deprecation src/cli.ts",
|
|
24
|
+
"format": "vp fmt **/**/*.{js,ts,json}",
|
|
25
|
+
"lint": "vp lint src/",
|
|
26
26
|
"clean-build": "rm -rf ./build",
|
|
27
27
|
"compile": "tsc -p .",
|
|
28
28
|
"build": "pnpm run format && pnpm run lint && pnpm run clean-build && pnpm run compile",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"node-liblzma": "^4.0.1"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
|
-
"@astrojs/starlight": "^0.
|
|
73
|
+
"@astrojs/starlight": "^0.38.2",
|
|
74
74
|
"@auto-it/all-contributors": "^11.2.1",
|
|
75
75
|
"@auto-it/conventional-commits": "^11.2.1",
|
|
76
76
|
"@auto-it/first-time-contributor": "^11.2.1",
|
|
@@ -82,37 +82,33 @@
|
|
|
82
82
|
"@types/serve-handler": "^6.1.1",
|
|
83
83
|
"@types/tar-fs": "^2.0.1",
|
|
84
84
|
"@types/unzip-stream": "^0.3.1",
|
|
85
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
86
|
-
"@typescript-eslint/parser": "^8.
|
|
85
|
+
"@typescript-eslint/eslint-plugin": "^8.57.2",
|
|
86
|
+
"@typescript-eslint/parser": "^8.57.2",
|
|
87
87
|
"all-contributors-cli": "^6.26.1",
|
|
88
|
-
"astro": "
|
|
88
|
+
"astro": "6.0.8",
|
|
89
89
|
"auto": "^11.2.1",
|
|
90
|
-
"eslint": "^
|
|
91
|
-
"eslint-config-
|
|
92
|
-
"eslint-config-prettier": "^8.3.0",
|
|
90
|
+
"eslint-config-love": "^151.0.0",
|
|
91
|
+
"eslint-config-prettier": "^10.1.8",
|
|
93
92
|
"eslint-plugin-import": "^2.29.1",
|
|
94
93
|
"eslint-plugin-node": "^11.1.0",
|
|
95
94
|
"eslint-plugin-prettier": "^5.2.1",
|
|
96
95
|
"eslint-plugin-promise": "^7.1.0",
|
|
97
|
-
"prettier": "^3.3.3",
|
|
98
|
-
"rollup": "^2.78.1",
|
|
99
96
|
"solid-js": "^1.4.3",
|
|
100
97
|
"tailwindcss": "^3.0.24",
|
|
101
98
|
"ts-node": "^10.9.2",
|
|
102
99
|
"tsx": "^4.19.2",
|
|
103
100
|
"typescript": "^5.5.4",
|
|
104
|
-
"typescript-eslint": "^8.
|
|
105
|
-
|
|
106
|
-
"prettier": {
|
|
107
|
-
"semi": false,
|
|
108
|
-
"singleQuote": true
|
|
101
|
+
"typescript-eslint": "^8.57.2",
|
|
102
|
+
"vite-plus": "latest"
|
|
109
103
|
},
|
|
110
104
|
"pnpm": {
|
|
111
105
|
"overrides": {
|
|
112
106
|
"semver@>=7.0.0 <7.5.2": ">=7.5.2",
|
|
113
107
|
"ejs@<3.1.7": ">=3.1.7",
|
|
114
108
|
"axios@>=0.8.1 <1.6.0": ">=1.6.0",
|
|
115
|
-
"minimatch@<3.0.5": ">=3.0.5"
|
|
109
|
+
"minimatch@<3.0.5": ">=3.0.5",
|
|
110
|
+
"vite": "npm:@voidzero-dev/vite-plus-core@latest",
|
|
111
|
+
"vitest": "npm:@voidzero-dev/vite-plus-test@latest"
|
|
116
112
|
},
|
|
117
113
|
"onlyBuiltDependencies": [
|
|
118
114
|
"@serialport/bindings-cpp",
|
|
@@ -11,7 +11,7 @@ const command = buildCommand({
|
|
|
11
11
|
brief: 'Build project for release to target device',
|
|
12
12
|
},
|
|
13
13
|
async func(flags,
|
|
14
|
-
//
|
|
14
|
+
// oxlint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
15
15
|
projectPath = '.') {
|
|
16
16
|
const currentPlatform = platformType().toLowerCase();
|
|
17
17
|
const { device = currentPlatform, deploy = false, example, 'list-examples': listExamples = false, 'list-devices': listDevices = false, mode = process.env.NODE_ENV ?? 'development', output, port, config = [], } = flags;
|
|
@@ -11,7 +11,7 @@ const command = buildCommand({
|
|
|
11
11
|
brief: 'Remove build artifacts for project',
|
|
12
12
|
},
|
|
13
13
|
async func(flags,
|
|
14
|
-
//
|
|
14
|
+
// oxlint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
15
15
|
projectPath = '.') {
|
|
16
16
|
const currentPlatform = platformType().toLowerCase();
|
|
17
17
|
const { device = currentPlatform, example, 'list-examples': listExamples = false, 'list-devices': listDevices = false, mode = process.env.NODE_ENV ?? 'development', output, config = [], } = flags;
|
|
@@ -11,7 +11,7 @@ const command = buildCommand({
|
|
|
11
11
|
brief: 'Connect to running debugging session on target device or simulator',
|
|
12
12
|
},
|
|
13
13
|
async func(flags,
|
|
14
|
-
//
|
|
14
|
+
// oxlint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
15
15
|
projectPath = '.') {
|
|
16
16
|
const currentPlatform = platformType().toLowerCase();
|
|
17
17
|
const { device = currentPlatform, port, example, 'list-examples': listExamples = false, 'list-devices': listDevices = false, log = false, mode = process.env.NODE_ENV ?? 'development', output, } = flags;
|
|
@@ -10,7 +10,7 @@ const command = buildCommand({
|
|
|
10
10
|
docs: {
|
|
11
11
|
brief: 'Build and launch project on target device or simulator',
|
|
12
12
|
},
|
|
13
|
-
//
|
|
13
|
+
// oxlint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
14
14
|
async func(flags, projectPath = '.') {
|
|
15
15
|
const currentPlatform = platformType().toLowerCase();
|
|
16
16
|
const { device = currentPlatform, example, 'list-examples': listExamples = false, 'list-devices': listDevices = false, log = false, mode = process.env.NODE_ENV ?? 'development', output, port, config = [], } = flags;
|
|
@@ -16,7 +16,7 @@ function parseEsptoolLines(lines) {
|
|
|
16
16
|
state = 'deviceFound';
|
|
17
17
|
}
|
|
18
18
|
if (line.includes('failed to connect') && currentPort !== null) {
|
|
19
|
-
//
|
|
19
|
+
// oxlint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
20
20
|
delete result[currentPort];
|
|
21
21
|
currentPort = null;
|
|
22
22
|
state = 'searching';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mkdir, readdir, rm } from 'node:fs/promises';
|
|
1
|
+
import { chmod, mkdir, readdir, rm, symlink } from 'node:fs/promises';
|
|
2
2
|
import { resolve, join } from 'node:path';
|
|
3
3
|
import { debuglog } from 'node:util';
|
|
4
4
|
import { execaCommand } from 'execa';
|
|
@@ -8,6 +8,8 @@ import { sourceEnvironment, which, execWithSudo } from '../system/exec.js';
|
|
|
8
8
|
import { ensureHomebrew, formulaeExists } from '../setup/homebrew.js';
|
|
9
9
|
import { isFailure } from '../system/errors.js';
|
|
10
10
|
import { exists } from '../system/filesystem.js';
|
|
11
|
+
import { Octokit } from '@octokit/rest';
|
|
12
|
+
import { downloadReleaseTools } from '../setup/moddable.js';
|
|
11
13
|
const debug = debuglog('xs-dev:toolchains:pico');
|
|
12
14
|
async function* installMacDeps(prompter) {
|
|
13
15
|
try {
|
|
@@ -84,26 +86,41 @@ async function* installLinuxDeps(_prompter) {
|
|
|
84
86
|
};
|
|
85
87
|
}
|
|
86
88
|
}
|
|
89
|
+
const PICO_VERSION = '2.0.0';
|
|
90
|
+
const repos = {
|
|
91
|
+
PICO_SDK: {
|
|
92
|
+
branch: PICO_VERSION,
|
|
93
|
+
url: 'https://github.com/raspberrypi/pico-sdk',
|
|
94
|
+
},
|
|
95
|
+
PICO_EXTRAS: {
|
|
96
|
+
branch: `sdk-${PICO_VERSION}`,
|
|
97
|
+
url: 'https://github.com/raspberrypi/pico-extras',
|
|
98
|
+
},
|
|
99
|
+
PICO_EXAMPLES: {
|
|
100
|
+
branch: `sdk-${PICO_VERSION}`,
|
|
101
|
+
url: 'https://github.com/raspberrypi/pico-examples',
|
|
102
|
+
},
|
|
103
|
+
PICOTOOL: {
|
|
104
|
+
branch: PICO_VERSION,
|
|
105
|
+
url: 'https://github.com/raspberrypi/picotool',
|
|
106
|
+
},
|
|
107
|
+
PICO_SDK_TOOLS: {
|
|
108
|
+
branch: 'v2.0.0-5',
|
|
109
|
+
url: 'https://github.com/raspberrypi/pico-sdk-tools',
|
|
110
|
+
},
|
|
111
|
+
};
|
|
87
112
|
export const picoToolchain = {
|
|
88
113
|
name: 'pico',
|
|
89
|
-
platforms: ['mac', 'lin'
|
|
114
|
+
platforms: ['mac', 'lin'],
|
|
90
115
|
async *install(ctx, prompter) {
|
|
91
116
|
yield { type: 'step:start', message: 'Starting pico tooling setup' };
|
|
92
|
-
const PICO_BRANCH = '2.0.0';
|
|
93
|
-
const PICO_SDK_REPO = 'https://github.com/raspberrypi/pico-sdk';
|
|
94
|
-
const PICO_EXTRAS_REPO = 'https://github.com/raspberrypi/pico-extras';
|
|
95
|
-
const PICO_EXAMPLES_REPO = 'https://github.com/raspberrypi/pico-examples';
|
|
96
|
-
const PICOTOOL_REPO = 'https://github.com/raspberrypi/picotool';
|
|
97
117
|
const PICO_ROOT = process.env.PICO_ROOT ?? resolve(INSTALL_DIR, 'pico');
|
|
98
118
|
const PICO_SDK_DIR = resolve(PICO_ROOT, 'pico-sdk');
|
|
99
119
|
const PICO_EXTRAS_DIR = resolve(PICO_ROOT, 'pico-extras');
|
|
100
120
|
const PICO_EXAMPLES_PATH = resolve(PICO_ROOT, 'pico-examples');
|
|
101
121
|
const PICOTOOL_PATH = resolve(PICO_ROOT, 'picotool');
|
|
102
122
|
const PICOTOOL_BUILD_DIR = resolve(PICOTOOL_PATH, 'build');
|
|
103
|
-
const
|
|
104
|
-
const PIOASM_TOOL_PATH = resolve(PICO_SDK_DIR, 'tools', 'pioasm');
|
|
105
|
-
const PIOASM_BUILD_PATH = resolve(PICO_SDK_BUILD_DIR, 'pioasm');
|
|
106
|
-
const PIOASM_PATH = resolve(PIOASM_BUILD_PATH, 'pioasm');
|
|
123
|
+
const PIOASM_PATH = resolve(PICO_ROOT, 'pioasm', 'pioasm');
|
|
107
124
|
await sourceEnvironment();
|
|
108
125
|
try {
|
|
109
126
|
debug('Ensuring pico directory');
|
|
@@ -154,18 +171,9 @@ export const picoToolchain = {
|
|
|
154
171
|
}
|
|
155
172
|
// 2. Install the pico sdk, extras, examples, and picotool:
|
|
156
173
|
const gitDeps = [
|
|
157
|
-
{
|
|
158
|
-
{
|
|
159
|
-
|
|
160
|
-
url: PICO_EXTRAS_REPO,
|
|
161
|
-
dest: PICO_EXTRAS_DIR,
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
branch: `sdk-${PICO_BRANCH}`,
|
|
165
|
-
url: PICO_EXAMPLES_REPO,
|
|
166
|
-
dest: PICO_EXAMPLES_PATH,
|
|
167
|
-
},
|
|
168
|
-
{ branch: PICO_BRANCH, url: PICOTOOL_REPO, dest: PICOTOOL_PATH },
|
|
174
|
+
{ ...repos.PICO_SDK, dest: PICO_SDK_DIR },
|
|
175
|
+
{ ...repos.PICO_EXTRAS, dest: PICO_EXTRAS_DIR },
|
|
176
|
+
{ ...repos.PICO_EXAMPLES, dest: PICO_EXAMPLES_PATH },
|
|
169
177
|
];
|
|
170
178
|
const clone = async ({ branch, url, dest, }) => {
|
|
171
179
|
if (await exists(dest))
|
|
@@ -186,6 +194,63 @@ export const picoToolchain = {
|
|
|
186
194
|
};
|
|
187
195
|
return;
|
|
188
196
|
}
|
|
197
|
+
// download pico-sdk-tools release
|
|
198
|
+
const octokit = new Octokit();
|
|
199
|
+
const { data: taggedRelease } = await octokit.rest.repos.getReleaseByTag({
|
|
200
|
+
owner: 'raspberrypi',
|
|
201
|
+
repo: 'pico-sdk-tools',
|
|
202
|
+
tag: repos.PICO_SDK_TOOLS.branch,
|
|
203
|
+
});
|
|
204
|
+
const assets = [
|
|
205
|
+
`pico-sdk-tools-${PICO_VERSION}`,
|
|
206
|
+
`picotool-${PICO_VERSION}`,
|
|
207
|
+
].map((asset) => {
|
|
208
|
+
switch (ctx.platform) {
|
|
209
|
+
case 'mac':
|
|
210
|
+
return `${asset}-mac.zip`;
|
|
211
|
+
case 'win':
|
|
212
|
+
return `${asset}-x64-win.zip`;
|
|
213
|
+
case 'lin': {
|
|
214
|
+
if (ctx.arch === 'arm64')
|
|
215
|
+
return `${asset}-aarch64-lin.tar.gz`;
|
|
216
|
+
return `${asset}-x86_64-lin.tar.gz`;
|
|
217
|
+
}
|
|
218
|
+
default:
|
|
219
|
+
return 'N/A';
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
try {
|
|
223
|
+
debug('Downloading pico-sdk-tools');
|
|
224
|
+
await Promise.all(assets.map((assetName) => downloadReleaseTools({
|
|
225
|
+
writePath: PICO_ROOT,
|
|
226
|
+
assetName,
|
|
227
|
+
release: taggedRelease,
|
|
228
|
+
})));
|
|
229
|
+
debug('Downloaded pico-sdk-tools to PICO_ROOT');
|
|
230
|
+
const toolPaths = [
|
|
231
|
+
resolve(PICO_ROOT, 'pioasm', 'pioasm'),
|
|
232
|
+
resolve(PICO_ROOT, 'picotool', 'picotool'),
|
|
233
|
+
];
|
|
234
|
+
await Promise.all(toolPaths.map((toolPath) => chmod(toolPath, 0o751)));
|
|
235
|
+
debug('Set executable permissions on tool binaries');
|
|
236
|
+
const symlinkDir = resolve(PICO_SDK_DIR, 'build', '_deps', 'picotool');
|
|
237
|
+
const symlinkPath = resolve(symlinkDir, 'picotool');
|
|
238
|
+
await mkdir(symlinkDir, { recursive: true });
|
|
239
|
+
await rm(symlinkPath, { force: true });
|
|
240
|
+
await symlink(resolve(PICO_ROOT, 'picotool', 'picotool'), symlinkPath);
|
|
241
|
+
debug('Created picotool compatibility symlink for Moddable make.pico.mk');
|
|
242
|
+
yield {
|
|
243
|
+
type: 'step:done',
|
|
244
|
+
message: 'Ending earlier to investigate results',
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
yield {
|
|
249
|
+
type: 'step:fail',
|
|
250
|
+
message: `Unable to download pico-sdk-tools release assets: ${error instanceof Error ? error.message : 'Unknown'}`,
|
|
251
|
+
};
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
189
254
|
// 3. Set the PICO_SDK_PATH and related environment variables
|
|
190
255
|
try {
|
|
191
256
|
if (process.env.PICO_SDK_DIR === undefined) {
|
|
@@ -220,41 +285,6 @@ export const picoToolchain = {
|
|
|
220
285
|
};
|
|
221
286
|
return;
|
|
222
287
|
}
|
|
223
|
-
// 4. Build some pico tools:
|
|
224
|
-
try {
|
|
225
|
-
const shouldBuildPico = !(await exists(PICO_SDK_BUILD_DIR)) ||
|
|
226
|
-
(await readdir(PICO_SDK_BUILD_DIR).catch(() => [])).length === 0;
|
|
227
|
-
if (shouldBuildPico) {
|
|
228
|
-
debug('Build some pico tools');
|
|
229
|
-
await mkdir(PICO_SDK_BUILD_DIR, { recursive: true });
|
|
230
|
-
await execaCommand('cmake ..', {
|
|
231
|
-
shell: process.env.SHELL ?? '/bin/bash',
|
|
232
|
-
cwd: PICO_SDK_BUILD_DIR,
|
|
233
|
-
});
|
|
234
|
-
await execaCommand('make', {
|
|
235
|
-
shell: process.env.SHELL ?? '/bin/bash',
|
|
236
|
-
cwd: PICO_SDK_BUILD_DIR,
|
|
237
|
-
});
|
|
238
|
-
// Build pioasm
|
|
239
|
-
await mkdir(PIOASM_BUILD_PATH, { recursive: true });
|
|
240
|
-
await execaCommand(`cmake ${PIOASM_TOOL_PATH}`, {
|
|
241
|
-
shell: process.env.SHELL ?? '/bin/bash',
|
|
242
|
-
cwd: PIOASM_BUILD_PATH,
|
|
243
|
-
});
|
|
244
|
-
await execaCommand('make', {
|
|
245
|
-
shell: process.env.SHELL ?? '/bin/bash',
|
|
246
|
-
cwd: PIOASM_BUILD_PATH,
|
|
247
|
-
});
|
|
248
|
-
debug('Pico tools built successfully');
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
catch (error) {
|
|
252
|
-
yield {
|
|
253
|
-
type: 'step:fail',
|
|
254
|
-
message: `Error building pico tools: ${String(error)}`,
|
|
255
|
-
};
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
288
|
// 5. Build _the_ picotool
|
|
259
289
|
try {
|
|
260
290
|
if (process.env.PICO_SDK_PATH === undefined) {
|
|
@@ -273,8 +303,9 @@ export const picoToolchain = {
|
|
|
273
303
|
else {
|
|
274
304
|
debug(`Using existing $PIOASM: ${process.env.PIOASM}`);
|
|
275
305
|
}
|
|
276
|
-
const shouldBuildPicotool = !(await exists(
|
|
277
|
-
(await readdir(
|
|
306
|
+
const shouldBuildPicotool = !(await exists(PICOTOOL_PATH)) ||
|
|
307
|
+
(await readdir(PICOTOOL_PATH).catch(() => [])).length === 0;
|
|
308
|
+
await upsert(EXPORTS_FILE_PATH, `export PATH="${PICOTOOL_PATH}:$PATH"`);
|
|
278
309
|
if (shouldBuildPicotool) {
|
|
279
310
|
debug('Build the picotool CLI');
|
|
280
311
|
await mkdir(PICOTOOL_BUILD_DIR, { recursive: true });
|
|
@@ -286,7 +317,6 @@ export const picoToolchain = {
|
|
|
286
317
|
shell: process.env.SHELL ?? '/bin/bash',
|
|
287
318
|
cwd: PICOTOOL_BUILD_DIR,
|
|
288
319
|
});
|
|
289
|
-
await upsert(EXPORTS_FILE_PATH, `export PATH="${PICOTOOL_BUILD_DIR}:$PATH"`);
|
|
290
320
|
debug('picotool CLI built successfully');
|
|
291
321
|
}
|
|
292
322
|
}
|
|
@@ -305,14 +335,11 @@ Then run: xs-dev run --example helloworld --device pico`,
|
|
|
305
335
|
};
|
|
306
336
|
},
|
|
307
337
|
async *update(ctx, prompter) {
|
|
308
|
-
const PICO_BRANCH = '2.0.0';
|
|
309
338
|
const PICO_ROOT = process.env.PICO_ROOT ?? resolve(INSTALL_DIR, 'pico');
|
|
310
339
|
const PICO_SDK_DIR = resolve(PICO_ROOT, 'pico-sdk');
|
|
311
340
|
const PICO_EXTRAS_DIR = resolve(PICO_ROOT, 'pico-extras');
|
|
312
341
|
const PICO_EXAMPLES_PATH = resolve(PICO_ROOT, 'pico-examples');
|
|
313
342
|
const PICOTOOL_PATH = resolve(PICO_ROOT, 'picotool');
|
|
314
|
-
const PICOTOOL_BUILD_DIR = resolve(PICOTOOL_PATH, 'build');
|
|
315
|
-
const PICO_SDK_BUILD_DIR = resolve(PICO_SDK_DIR, 'build');
|
|
316
343
|
await sourceEnvironment();
|
|
317
344
|
yield { type: 'step:start', message: 'Starting pico tooling update' };
|
|
318
345
|
debug('Ensuring pico toolchain directory');
|
|
@@ -366,7 +393,9 @@ Then run: xs-dev run --example helloworld --device pico`,
|
|
|
366
393
|
if (await exists(PICO_SDK_DIR)) {
|
|
367
394
|
debug('Updating pico-sdk repo');
|
|
368
395
|
await execaCommand('git fetch --all --tags', { cwd: PICO_SDK_DIR });
|
|
369
|
-
await execaCommand(`git checkout ${
|
|
396
|
+
await execaCommand(`git checkout ${PICO_VERSION}`, {
|
|
397
|
+
cwd: PICO_SDK_DIR,
|
|
398
|
+
});
|
|
370
399
|
await execaCommand('git submodule update --init --recursive', {
|
|
371
400
|
cwd: PICO_SDK_DIR,
|
|
372
401
|
});
|
|
@@ -375,7 +404,7 @@ Then run: xs-dev run --example helloworld --device pico`,
|
|
|
375
404
|
if (await exists(PICO_EXTRAS_DIR)) {
|
|
376
405
|
debug('Updating pico-extras repo');
|
|
377
406
|
await execaCommand('git fetch --all --tags', { cwd: PICO_EXTRAS_DIR });
|
|
378
|
-
await execaCommand(`git checkout sdk-${
|
|
407
|
+
await execaCommand(`git checkout sdk-${PICO_VERSION}`, {
|
|
379
408
|
cwd: PICO_EXTRAS_DIR,
|
|
380
409
|
});
|
|
381
410
|
debug('pico-extras repo updates');
|
|
@@ -385,41 +414,69 @@ Then run: xs-dev run --example helloworld --device pico`,
|
|
|
385
414
|
await execaCommand('git fetch --all --tags', {
|
|
386
415
|
cwd: PICO_EXAMPLES_PATH,
|
|
387
416
|
});
|
|
388
|
-
await execaCommand(`git checkout sdk-${
|
|
417
|
+
await execaCommand(`git checkout sdk-${PICO_VERSION}`, {
|
|
389
418
|
cwd: PICO_EXAMPLES_PATH,
|
|
390
419
|
});
|
|
391
420
|
debug('pico-examples repo updated');
|
|
392
421
|
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
}
|
|
399
|
-
// Build some pico tools:
|
|
400
|
-
debug('Building pico tools');
|
|
401
|
-
await mkdir(PICO_SDK_BUILD_DIR, { recursive: true });
|
|
402
|
-
await execaCommand('cmake ..', {
|
|
403
|
-
shell: process.env.SHELL,
|
|
404
|
-
cwd: PICO_SDK_BUILD_DIR,
|
|
405
|
-
});
|
|
406
|
-
await execaCommand('make', {
|
|
407
|
-
shell: process.env.SHELL,
|
|
408
|
-
cwd: PICO_SDK_BUILD_DIR,
|
|
422
|
+
const octokit = new Octokit();
|
|
423
|
+
const { data: taggedRelease } = await octokit.rest.repos.getReleaseByTag({
|
|
424
|
+
owner: 'raspberrypi',
|
|
425
|
+
repo: 'pico-sdk-tools',
|
|
426
|
+
tag: repos.PICO_SDK_TOOLS.branch,
|
|
409
427
|
});
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
428
|
+
const assets = [
|
|
429
|
+
`pico-sdk-tools-${PICO_VERSION}`,
|
|
430
|
+
`picotool-${PICO_VERSION}`,
|
|
431
|
+
].map((asset) => {
|
|
432
|
+
switch (ctx.platform) {
|
|
433
|
+
case 'mac':
|
|
434
|
+
return `${asset}-mac.zip`;
|
|
435
|
+
case 'win':
|
|
436
|
+
return `${asset}-x64-win.zip`;
|
|
437
|
+
case 'lin': {
|
|
438
|
+
if (ctx.arch === 'arm64')
|
|
439
|
+
return `${asset}-aarch64-lin.tar.gz`;
|
|
440
|
+
return `${asset}-x86_64-lin.tar.gz`;
|
|
441
|
+
}
|
|
442
|
+
default:
|
|
443
|
+
return 'N/A';
|
|
444
|
+
}
|
|
421
445
|
});
|
|
422
|
-
|
|
446
|
+
try {
|
|
447
|
+
debug('Downloading pico-sdk-tools');
|
|
448
|
+
// oxlint-disable-next-line @typescript-eslint/promise-function-async
|
|
449
|
+
await Promise.all(assets.map((assetName) => downloadReleaseTools({
|
|
450
|
+
writePath: PICO_ROOT,
|
|
451
|
+
assetName,
|
|
452
|
+
release: taggedRelease,
|
|
453
|
+
})));
|
|
454
|
+
debug('Downloaded pico-sdk-tools to PICO_ROOT');
|
|
455
|
+
const toolPaths = [
|
|
456
|
+
resolve(PICO_ROOT, 'pioasm', 'pioasm'),
|
|
457
|
+
resolve(PICO_ROOT, 'picotool', 'picotool'),
|
|
458
|
+
];
|
|
459
|
+
// oxlint-disable-next-line @typescript-eslint/promise-function-async
|
|
460
|
+
await Promise.all(toolPaths.map((toolPath) => chmod(toolPath, 0o751)));
|
|
461
|
+
debug('Set executable permissions on tool binaries');
|
|
462
|
+
const symlinkDir = resolve(PICO_SDK_DIR, 'build', '_deps', 'picotool');
|
|
463
|
+
const symlinkPath = resolve(symlinkDir, 'picotool');
|
|
464
|
+
await mkdir(symlinkDir, { recursive: true });
|
|
465
|
+
await rm(symlinkPath, { force: true });
|
|
466
|
+
await symlink(resolve(PICO_ROOT, 'picotool', 'picotool'), symlinkPath);
|
|
467
|
+
debug('Created picotool compatibility symlink for Moddable make.pico.mk');
|
|
468
|
+
yield {
|
|
469
|
+
type: 'step:done',
|
|
470
|
+
message: 'Ending earlier to investigate results',
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
catch (error) {
|
|
474
|
+
yield {
|
|
475
|
+
type: 'step:fail',
|
|
476
|
+
message: `Unable to download pico-sdk-tools release assets: ${error instanceof Error ? error.message : 'Unknown'}`,
|
|
477
|
+
};
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
423
480
|
yield {
|
|
424
481
|
type: 'step:done',
|
|
425
482
|
message: `Successfully updated pico platform support for Moddable!
|
|
@@ -476,9 +533,10 @@ Then run: xs-dev run --example helloworld --device pico`,
|
|
|
476
533
|
PICO_ROOT: resolve(INSTALL_DIR, 'pico'),
|
|
477
534
|
PICO_SDK_PATH: resolve(INSTALL_DIR, 'pico', 'pico-sdk'),
|
|
478
535
|
PICO_SDK_DIR: resolve(INSTALL_DIR, 'pico', 'pico-sdk'),
|
|
479
|
-
PIOASM: resolve(INSTALL_DIR, 'pico', '
|
|
536
|
+
PIOASM: resolve(INSTALL_DIR, 'pico', 'pioasm', 'pioasm'),
|
|
537
|
+
UF2CONV: resolve(INSTALL_DIR, 'pico', 'picotool', 'picotool'),
|
|
480
538
|
PICO_GCC_ROOT: process.env.PICO_GCC_ROOT ?? defaultGccRoot,
|
|
481
539
|
};
|
|
482
540
|
},
|
|
483
541
|
};
|
|
484
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGljby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29sYm94L3Rvb2xjaGFpbnMvcGljby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3RFLE9BQU8sTUFBTSxNQUFNLHVCQUF1QixDQUFBO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBS2hELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0FBRWhELEtBQUssU0FBUyxDQUFDLENBQUMsY0FBYyxDQUM1QixRQUFrQjtJQUVsQixJQUFJLENBQUM7UUFDSCxJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNuRCxNQUFNLEtBQUssQ0FBQTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztRQUN4QixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNO2dC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
|
|
542
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGljby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29sYm94L3Rvb2xjaGFpbnMvcGljby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDdEUsT0FBTyxNQUFNLE1BQU0sdUJBQXVCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFJaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUUzRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtBQUVoRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLGNBQWMsQ0FDNUIsUUFBa0I7SUFFbEIsSUFBSSxDQUFDO1FBQ0gsSUFBSSxLQUFLLEVBQUUsTUFBTSxLQUFLLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbkQsTUFB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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { defineCollection } from 'astro:content'
|
|
2
|
+
import { glob } from 'astro/loaders'
|
|
3
|
+
import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'
|
|
4
|
+
import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'
|
|
5
|
+
|
|
6
|
+
export const collections = {
|
|
7
|
+
docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }),
|
|
8
|
+
i18n: defineCollection({ loader: i18nLoader(), schema: i18nSchema() }),
|
|
9
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xs-dev",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "CLI for automating the setup and usage of Moddable XS tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "build/types/types.d.ts",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"xs-dev": "tsx src/cli.ts",
|
|
23
|
-
"xs-dev:debug": "
|
|
24
|
-
"format": "
|
|
25
|
-
"lint": "
|
|
23
|
+
"xs-dev:debug": "NODE_DEBUG=xs-dev* tsx --trace-deprecation src/cli.ts",
|
|
24
|
+
"format": "vp fmt **/**/*.{js,ts,json}",
|
|
25
|
+
"lint": "vp lint src/",
|
|
26
26
|
"clean-build": "rm -rf ./build",
|
|
27
27
|
"compile": "tsc -p .",
|
|
28
28
|
"build": "pnpm run format && pnpm run lint && pnpm run clean-build && pnpm run compile",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"node-liblzma": "^4.0.1"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
|
-
"@astrojs/starlight": "^0.
|
|
73
|
+
"@astrojs/starlight": "^0.38.2",
|
|
74
74
|
"@auto-it/all-contributors": "^11.2.1",
|
|
75
75
|
"@auto-it/conventional-commits": "^11.2.1",
|
|
76
76
|
"@auto-it/first-time-contributor": "^11.2.1",
|
|
@@ -82,37 +82,33 @@
|
|
|
82
82
|
"@types/serve-handler": "^6.1.1",
|
|
83
83
|
"@types/tar-fs": "^2.0.1",
|
|
84
84
|
"@types/unzip-stream": "^0.3.1",
|
|
85
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
86
|
-
"@typescript-eslint/parser": "^8.
|
|
85
|
+
"@typescript-eslint/eslint-plugin": "^8.57.2",
|
|
86
|
+
"@typescript-eslint/parser": "^8.57.2",
|
|
87
87
|
"all-contributors-cli": "^6.26.1",
|
|
88
|
-
"astro": "
|
|
88
|
+
"astro": "6.0.8",
|
|
89
89
|
"auto": "^11.2.1",
|
|
90
|
-
"eslint": "^
|
|
91
|
-
"eslint-config-
|
|
92
|
-
"eslint-config-prettier": "^8.3.0",
|
|
90
|
+
"eslint-config-love": "^151.0.0",
|
|
91
|
+
"eslint-config-prettier": "^10.1.8",
|
|
93
92
|
"eslint-plugin-import": "^2.29.1",
|
|
94
93
|
"eslint-plugin-node": "^11.1.0",
|
|
95
94
|
"eslint-plugin-prettier": "^5.2.1",
|
|
96
95
|
"eslint-plugin-promise": "^7.1.0",
|
|
97
|
-
"prettier": "^3.3.3",
|
|
98
|
-
"rollup": "^2.78.1",
|
|
99
96
|
"solid-js": "^1.4.3",
|
|
100
97
|
"tailwindcss": "^3.0.24",
|
|
101
98
|
"ts-node": "^10.9.2",
|
|
102
99
|
"tsx": "^4.19.2",
|
|
103
100
|
"typescript": "^5.5.4",
|
|
104
|
-
"typescript-eslint": "^8.
|
|
105
|
-
|
|
106
|
-
"prettier": {
|
|
107
|
-
"semi": false,
|
|
108
|
-
"singleQuote": true
|
|
101
|
+
"typescript-eslint": "^8.57.2",
|
|
102
|
+
"vite-plus": "latest"
|
|
109
103
|
},
|
|
110
104
|
"pnpm": {
|
|
111
105
|
"overrides": {
|
|
112
106
|
"semver@>=7.0.0 <7.5.2": ">=7.5.2",
|
|
113
107
|
"ejs@<3.1.7": ">=3.1.7",
|
|
114
108
|
"axios@>=0.8.1 <1.6.0": ">=1.6.0",
|
|
115
|
-
"minimatch@<3.0.5": ">=3.0.5"
|
|
109
|
+
"minimatch@<3.0.5": ">=3.0.5",
|
|
110
|
+
"vite": "npm:@voidzero-dev/vite-plus-core@latest",
|
|
111
|
+
"vitest": "npm:@voidzero-dev/vite-plus-test@latest"
|
|
116
112
|
},
|
|
117
113
|
"onlyBuiltDependencies": [
|
|
118
114
|
"@serialport/bindings-cpp",
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { defineCollection } from 'astro:content'
|
|
2
|
-
import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'
|
|
3
|
-
|
|
4
|
-
export const collections = {
|
|
5
|
-
docs: defineCollection({ schema: docsSchema() }),
|
|
6
|
-
i18n: defineCollection({ type: 'data', schema: i18nSchema() }),
|
|
7
|
-
}
|