Skip to content

Commit a595871

Browse files
chore: Add --skip-uninstalls option to setup script (#358)
## PR Checklist - [x] Addresses an existing open issue: fixes #352 - [x] That issue was marked as [`status: accepting prs`](https://github.com/JoshuaKGoldberg/template-typescript-node-package/issues?q=is%3Aopen+is%3Aissue+label%3A%22status%3A+accepting+prs%22) - [x] Steps in [CONTRIBUTING.md](https://github.com/JoshuaKGoldberg/template-typescript-node-package/blob/main/.github/CONTRIBUTING.md) were taken ## Overview Adds ```--skip-uninstalls``` option, ```skipUninstalls``` constant, skips removal of ```/script``` and, skips uninstallation of devDependencies only used in setup. ``` if (skipUninstalls) { console.log(); console.log(chalk.gray`➖ Skipping removal of setup script.`); console.log( chalk.gray`➖ Skipping removal of devDependencies only used for setup.` ); } else { await withSpinner( async () => { await fs.rm("./script", { force: true, recursive: true }); await fs.rm(".github/workflows/setup.yml"); }, { startText: `Removing setup script...`, successText: `Removed setup script.`, stopText: `Error removing setup script.`, errorText: `Could not remove setup script. `, } ); await withSpinner( async () => { await $`pnpm remove execa @clack/prompts all-contributors-cli chalk octokit npm-user replace-in-file title-case -D`; }, { startText: `Removing devDependency packages only used for setup...`, successText: `Removed devDependency packages only used for setup.`, stopText: `Error removing devDependency packages only used for setup.`, errorText: `Could not remove devDependency packages only used for setup. `, } ); } ``` --------- Co-authored-by: Josh Goldberg <[email protected]>
1 parent f764128 commit a595871

File tree

1 file changed

+33
-25
lines changed

1 file changed

+33
-25
lines changed

script/setup.js

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ try {
3131
repository: { type: "string" },
3232
title: { type: "string" },
3333
"skip-api": { type: "boolean" },
34+
"skip-uninstalls": { type: "boolean" },
3435
},
3536
tokens: true,
3637
strict: false,
@@ -124,15 +125,16 @@ try {
124125
);
125126

126127
const skipApi = values["skip-api"];
128+
const skipUninstalls = values["skip-uninstalls"];
127129

128130
const successSpinnerBlock = (blockText) => {
129131
s.start(chalk.green("✅ " + blockText));
130132
s.stop(chalk.green("✅ " + blockText));
131133
};
132134

133135
const skipSpinnerBlock = (blockText) => {
134-
s.start(chalk.yellow("➖ " + blockText));
135-
s.stop(chalk.yellow("➖ " + blockText));
136+
s.start(chalk.gray("➖ " + blockText));
137+
s.stop(chalk.gray("➖ " + blockText));
136138
};
137139

138140
successSpinnerBlock("Started hydrating package metadata locally.");
@@ -497,30 +499,36 @@ try {
497499
successSpinnerBlock(`Finished API hydration.`);
498500
}
499501

500-
await withSpinner(
501-
async () => {
502-
await fs.rm("./script", { force: true, recursive: true });
503-
await fs.rm(".github/workflows/setup.yml");
504-
},
505-
{
506-
startText: `Removing setup script...`,
507-
successText: `Removed setup script.`,
508-
stopText: `Error removing setup script.`,
509-
errorText: `Could not remove setup script. `,
510-
}
511-
);
502+
if (skipUninstalls) {
503+
skipSpinnerBlock(
504+
`Skipping uninstall of devDependencies only used for setup.`
505+
);
506+
} else {
507+
await withSpinner(
508+
async () => {
509+
await fs.rm("./script", { force: true, recursive: true });
510+
await fs.rm(".github/workflows/setup.yml");
511+
},
512+
{
513+
startText: `Removing setup script...`,
514+
successText: `Removed setup script.`,
515+
stopText: `Error removing setup script.`,
516+
errorText: `Could not remove setup script. `,
517+
}
518+
);
512519

513-
await withSpinner(
514-
async () => {
515-
await $`pnpm remove execa @clack/prompts all-contributors-cli chalk octokit npm-user replace-in-file title-case -D`;
516-
},
517-
{
518-
startText: `Removing devDependency packages only used for setup...`,
519-
successText: `Removed devDependency packages only used for setup.`,
520-
stopText: `Error removing devDependency packages only used for setup.`,
521-
errorText: `Could not remove devDependency packages only used for setup. `,
522-
}
523-
);
520+
await withSpinner(
521+
async () => {
522+
await $`pnpm remove execa @clack/prompts all-contributors-cli chalk octokit npm-user replace-in-file title-case -D`;
523+
},
524+
{
525+
startText: `Removing devDependency packages only used for setup...`,
526+
successText: `Removed devDependency packages only used for setup.`,
527+
stopText: `Error removing devDependency packages only used for setup.`,
528+
errorText: `Could not remove devDependency packages only used for setup. `,
529+
}
530+
);
531+
}
524532

525533
prompts.outro(chalk.blue`Great, looks like everything worked! 🎉`);
526534

0 commit comments

Comments
 (0)