diff --git a/.changeset/light-taxis-share.md b/.changeset/light-taxis-share.md new file mode 100644 index 000000000..e93caa375 --- /dev/null +++ b/.changeset/light-taxis-share.md @@ -0,0 +1,5 @@ +--- +'sv': patch +--- + +fix(add): allow passing add-on as argument that depends on another add-on diff --git a/packages/cli/commands/add/index.ts b/packages/cli/commands/add/index.ts index f7449f588..25b0ec88c 100644 --- a/packages/cli/commands/add/index.ts +++ b/packages/cli/commands/add/index.ts @@ -380,14 +380,13 @@ export async function runAddCommand( // prepare official addons let workspace = await createWorkspace({ cwd: options.cwd }); - const setups = selectedAddons.length ? selectedAddons.map(({ addon }) => addon) : officialAddons; - const addonSetupResults = setupAddons(setups, workspace); // prompt which addons to apply if (selectedAddons.length === 0) { + const allSetupResults = setupAddons(officialAddons, workspace); const addonOptions = officialAddons // only display supported addons relative to the current environment - .filter(({ id }) => addonSetupResults[id].unsupported.length === 0) + .filter(({ id }) => allSetupResults[id].unsupported.length === 0) .map(({ id, homepage, shortDescription }) => ({ label: id, value: id, @@ -414,7 +413,9 @@ export async function runAddCommand( for (const { addon } of selectedAddons) { workspace = await createWorkspace(workspace); - const setupResult = addonSetupResults[addon.id]; + const setups = selectedAddons.map(({ addon }) => addon); + const setupResult = setupAddons(setups, workspace)[addon.id]; + const missingDependencies = setupResult.dependsOn.filter( (depId) => !selectedAddons.some((a) => a.addon.id === depId) ); @@ -436,8 +437,11 @@ export async function runAddCommand( } } - // run verifications + // run all setups after inter-addon deps have been added const addons = selectedAddons.map(({ addon }) => addon); + const addonSetupResults = setupAddons(addons, workspace); + + // run verifications const verifications = [ ...verifyCleanWorkingDirectory(options.cwd, options.gitCheck), ...verifyUnsupportedAddons(addons, addonSetupResults)