chore: use tinyexec - #1213
Conversation
* main * throw if pm isnt installed * throw * nit * changeset * tmv sv ordering * sh is unknwon on windows (execSync know about it) * hint to label & next step * caching agent install, keep none by default --------- Co-authored-by: jycouet <jycouet@gmail.com>
Bump package-manager-detector to ^1.8.0, the first release with nub in its agent and command tables. sv-utils bundles the library at build time, so the published bundle only knows about nub once rebuilt against >=1.8.0.
…eltejs#1192) When prettier is among the scaffolded add-ons, format the whole project rather than only the add-on-touched files, so a fresh project passes its own lint. Prettier's ignore rules still apply. Signed-off-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com> Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
* feat: addOption in setup phase * fmt² * okay cut * humm * fmt * chore: update api surface * test: await async setupAddons in engine tests * Update packages/sv/src/core/config.ts Co-authored-by: Scott Wu <sw@scottwu.ca> * Update packages/sv/src/core/config.ts Co-authored-by: Scott Wu <sw@scottwu.ca> * feat: typesafe addOption keys via defineAddon setup generic - addOption now constrains key + question type from defineAddon<SetupValues>() - regenerate api surface --------- Co-authored-by: Scott Wu <sw@scottwu.ca>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* mv * feat: welcome `ai-tools` * abc * don't format skills * opencode -> plugin, claude question, subagents * fmt * cleanup snap * snap * update new path * feat(ai-tools): choose Svelte plugin or individual tools per client - delivery option: Svelte plugin (Claude via committed .claude/settings.json, opencode via opencode.json) or individual tools - granular MCP/skills/sub-agents selection; rename `setup` -> `mcpSetup` - consolidate per-client config into a single `CLIENTS` registry * feat(ai-tools): install skills for cursor, gemini and vscode * feat(ai-tools): CLAUDE.md imports AGENTS.md to keep a single source of truth * chore(ai-tools): rename RX_MD to REGEX_MD * feat(ai-tools): warn in next steps when plugin and loose skill/agent files coexist * fmt * fix(ai-tools): 'other' client now writes AGENTS.md * fix(ai-tools): only ask tool/MCP questions when a client can use them * Update packages/sv/src/create/shared/+skills/svelte-code-writer/SKILL.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update documentation/docs/30-add-ons/01-ai-tools.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update documentation/docs/30-add-ons/01-ai-tools.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update documentation/docs/30-add-ons/01-ai-tools.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update documentation/docs/30-add-ons/01-ai-tools.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/addons/ai-tools.ts Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/addons/ai-tools.ts Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+skills/svelte-code-writer/SKILL.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+skills/svelte-code-writer/SKILL.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+skills/svelte-code-writer/SKILL.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+skills/svelte-code-writer/SKILL.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/addons/ai-tools.ts Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/addons/ai-tools.ts Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+agents/svelte-file-editor.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+agents/svelte-file-editor.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+agents/svelte-file-editor.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+agents/svelte-file-editor.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+agents/svelte-file-editor.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+agents/svelte-file-editor.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+agents/svelte-file-editor.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * Update packages/sv/src/create/shared/+agents/svelte-file-editor.md Co-authored-by: Rich Harris <hello@rich-harris.dev> * update skills * fix: drop stale reference files and update ai-tools snapshots --------- Co-authored-by: Rich Harris <hello@rich-harris.dev>
…rrors (sveltejs#1198) * fix: drop obsolete pnpm allowBuilds entries and surface real format errors * test: install generated project outside the repo workspace
…t 3 shape (sveltejs#1199) * feat(sv-utils): add SvelteKit 3 helpers Version detection, the `$lib` -> `#lib` move and the generated `$app/tsconfig`, so add-ons stop hardcoding kit-version-specific shapes. * fix(core): make `runsAfter` actually order add-ons It sorted by number of constraints, so an add-on could still run before one it declared it runs after. Topologically sort instead, seeded with the previous order so unconstrained add-ons keep their relative position. * fix(experimental): create manages `#lib` and the rest of the SvelteKit 3 shape - skip `handleRenderingErrors`/`explicitEnvironmentVariables`, removed in kit 3 - extend `$app/tsconfig` and own `include`, keeping deliberate compiler option overrides - rewrite `$lib` to `#lib` and declare the subpath imports Vite resolves from - drizzle drops the removed `typescript.config` hook; `defineEnvVars` moves to `@sveltejs/kit/env` - better-auth and paraglide emit the right lib prefix and route type * test(cli): cover `kit@next` with a real install, build and check No snapshot: the point is that the project works, not what it looks like. * Update packages/sv/src/addons/drizzle.ts Co-authored-by: Scott Wu <sw@scottwu.ca> * Update packages/sv-utils/src/kit3.ts Co-authored-by: Scott Wu <sw@scottwu.ca> * test(cli): cover better-auth on `kit@next`, finish the `KIT3_TSCONFIG_DEFAULT` rename better-auth has the most `#lib` imports, so it gets its own `kit@next` install/build/check case. It can't join the existing one: kit treats any `remote.js` as a remote module, including the one `jose` ships, so `remoteFunctions` breaks the build. Also rewords the changeset and updates the two remaining `KIT3_TSCONFIG_INHERITED` references. * test(cli): pin the `kit@next` prereleases the experimental cases run against * test(cli): drop the better-auth `kit@next` case * chore: fix indentation * test(cli): let the generated project install a fresh prerelease * test(cli): track the `next` tag instead of a pinned prerelease * chore: trim the changesets to one line each * chore: changeset wording --------- Co-authored-by: Scott Wu <sw@scottwu.ca>
* remove `better-sqlite3` from `allowBuilds` * changeset * Update packages/sv/src/addons/drizzle.ts Co-authored-by: CokaKoala <31664583+AdrianGonz97@users.noreply.github.com> * changeset --------- Co-authored-by: CokaKoala <31664583+AdrianGonz97@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
|
Install the latest version of pnpm add https://pkg.svelte.dev/sv/c/a0c77558e938bac6bc25da4e454bdb5eb93d0e8eOpen in Note This PR is from a fork. A maintainer must approve approve each commit before it can be built and installed. |
|
sacrosanctic
left a comment
There was a problem hiding this comment.
Not sure if these are supposed to throw.
| await exec(command, args, { nodeOptions: { cwd }, throwOnError: true }); | ||
| return {}; | ||
| } catch (e) { | ||
| // @ts-expect-error tinyexec rethrows the spawn error as-is |
There was a problem hiding this comment.
// @ts-expect-error tinyexec rethrows the spawn error as-is
I know you didn't change this catch-block, but is this still correct? Looking through NonZeroExitError, I don't see e.code as an available prop.
There was a problem hiding this comment.
e.code is a node error. I'll update the code to clarify this.
| } | ||
|
|
||
| if (dockerInstalled) execSync('docker compose up --detach', { cwd, stdio: 'pipe' }); | ||
| if (dockerInstalled) execSync('docker', ['compose', 'up', '--detach'], { nodeOptions: { cwd } }); |
There was a problem hiding this comment.
this one should probably throw (or at least be handled in some way) as well if we're depending on it running successfully
|
|
||
| fs.writeFileSync(path.join(test_workspace_dir, 'pnpm-workspace.yaml'), 'packages:\n - ./*\n'); | ||
|
|
||
| const exec_async = promisify(nodeExec); |
There was a problem hiding this comment.
hmmm, there was a reason we used this instead due to failing tests, but if it's no longer failing then we're probably good
Co-authored-by: CokaKoala <31664583+AdrianGonz97@users.noreply.github.com>
|
I just learned that execsync still throws even when it is false if the command itself is invalid... |
Closes #
Description
Checklist