8000 feat: add `--default` flag by AdrianGonz97 · Pull Request #376 · svelte-add/svelte-add · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Oct 20, 2024. It is now read-only.

feat: add --default flag #376

Merged
merged 6 commits into from
May 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/curly-peaches-do.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@svelte-add/core": minor
---

feat: added the shorthand `--default` flag to install the default adder options
12 changes: 11 additions & 1 deletion packages/core/adder/execute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export async function executeAdders<Args extends OptionDefinition>(

let workingDirectory: string | null;
if (isTesting) workingDirectory = remoteControlOptions.workingDirectory;
else workingDirectory = await determineWorkingDirectory(commonCliOptions.path);
else workingDirectory = determineWorkingDirectory(commonCliOptions.path);
workingDirectory = await detectSvelteDirectory(workingDirectory);
const createProject = workingDirectory == null;
if (!workingDirectory) workingDirectory = process.cwd();
Expand Down Expand Up @@ -131,6 +131,16 @@ async function executePlan<Args extends OptionDefinition>(
if (!executionPlan.commonCliOptions.skipPreconditions)
await validatePreconditions(adderDetails, executingAdder.name, executionPlan.workingDirectory, isTesting);

// applies the default option value to missing adder's cli options
if (executionPlan.commonCliOptions.default) {
for (const adder of adderDetails) {
const adderId = adder.config.metadata.id;
for (const [option, value] of Object.entries(adder.config.options)) {
executionPlan.cliOptionsByAdderId[adderId][option] ??= value.default;
}
}
}

// ask the user questions about unselected options
await requestMissingOptionsFromUser(adderDetails, executionPlan);

Expand Down
12 changes: 11 additions & 1 deletion packages/core/adder/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,9 @@ export type OptionValues<Args extends OptionDefinition> = {
: never;
};

export type AvailableCliOptionKeys = "path" | "skipPreconditions" | "skipInstall";
export type AvailableCliOptionKeys = keyof AvailableCliOptionKeyTypes;
export type AvailableCliOptionKeyTypes = {
default: boolean;
path: string;
skipPreconditions: boolean;
skipInstall: boolean;
Expand All @@ -57,6 +58,14 @@ export type AvailableCliOption = {
export type AvailableCliOptions = Record<AvailableCliOptionKeys, AvailableCliOption>;

export const availableCliOptions: AvailableCliOptions = {
default: {
cliArg: "default",
processedCliArg: "default",
type: "boolean",
default: false,
description: "Installs default adder options for unspecified options",
allowShorthand: true,
},
path: {
cliArg: "path",
processedCliArg: "path",
Expand Down Expand Up @@ -168,6 +177,7 @@ export function ensureCorrectOptionTypes<Args extends OptionDefinition>(

export function extractCommonCliOptions(cliOptions: CliOptionValues) {
const commonOptions: AvailableCliOptionValues = {
default: cliOptions[availableCliOptions.default.processedCliArg],
path: cliOptions[availableCliOptions.path.processedCliArg],
skipInstall: cliOptions[availableCliOptions.skipInstall.processedCliArg],
skipPreconditions: cliOptions[availableCliOptions.skipPreconditions.processedCliArg],
Expand Down
1 change: 0 additions & 1 deletion packages/core/utils/dependencies.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ export async function suggestInstallingDependencies(workingDirectory: string) {
}

if (!selectedPm || !packageManagers[selectedPm]) {
console.log("Skipped installing dependencies");
return;
}

Expand Down
2 changes: 1 addition & 1 deletion packages/dev-utils/utils/generate-readme.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ function generateCommonOptions(adderNpx: string) {
markdown += `\n- \`${value.cliArg}\` (default: ${value.default}) - ${value.description}`;
}

const firstOptionValue = options[0];
const firstOptionValue = options.find((option) => option.cliArg === "path")!;

markdown += `\n\n
Option syntax
Expand Down
Loading
0