feat: Add no-install option (#9604)

* chore: no install option + fix type

* chore: apply suggestions

Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>

---------

Co-authored-by: Jaw0r3k <jaw0r3k.git@gmail.com>
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
This commit is contained in:
Jaw0r3k
2023-08-26 23:31:22 +02:00
committed by GitHub
parent 485dd718c5
commit 8325fa6540
2 changed files with 18 additions and 14 deletions

View File

@@ -40,8 +40,9 @@ program
}) })
.option('--typescript', 'Whether to use the TypeScript template.') .option('--typescript', 'Whether to use the TypeScript template.')
.option('--javascript', 'Whether to use the JavaScript template.') .option('--javascript', 'Whether to use the JavaScript template.')
.option('--no-install', 'Whether to not automatically install the packages.')
.addOption( .addOption(
new Option('--packageManager <packageManager>', 'The package manager to use.') new Option('--package-manager <packageManager>', 'The package manager to use.')
.choices(PACKAGE_MANAGERS) .choices(PACKAGE_MANAGERS)
.default(resolvePackageManager()), .default(resolvePackageManager()),
) )
@@ -49,7 +50,7 @@ program
.parse(); .parse();
// eslint-disable-next-line prefer-const // eslint-disable-next-line prefer-const
let { typescript, javascript, packageManager } = program.opts(); let { typescript, javascript, packageManager, install: installPackages } = program.opts();
if (!projectDirectory) { if (!projectDirectory) {
projectDirectory = ( projectDirectory = (
@@ -100,4 +101,4 @@ if (!deno && typescript === undefined && javascript === undefined) {
typescript = useTypescript; typescript = useTypescript;
} }
await createDiscordBot({ typescript, directory: projectDirectory, packageManager }); await createDiscordBot({ typescript, directory: projectDirectory, packageManager, installPackages });

25
packages/create-discord-bot/src/create-discord-bot.ts Executable file → Normal file
View File

@@ -11,11 +11,12 @@ import { GUIDE_URL } from './util/constants.js';
interface Options { interface Options {
directory: string; directory: string;
installPackages: boolean;
packageManager: PackageManager; packageManager: PackageManager;
typescript?: boolean; typescript?: boolean;
} }
export async function createDiscordBot({ directory, typescript, packageManager }: Options) { export async function createDiscordBot({ directory, installPackages, typescript, packageManager }: Options) {
const root = path.resolve(directory); const root = path.resolve(directory);
const directoryName = path.basename(root); const directoryName = path.basename(root);
@@ -88,16 +89,18 @@ export async function createDiscordBot({ directory, typescript, packageManager }
}); });
await writeFile('./package.json', newPackageJSON); await writeFile('./package.json', newPackageJSON);
try { if (installPackages) {
install(packageManager); try {
} catch (error) { install(packageManager);
console.log(); } catch (error) {
const err = error as ExecException; console.log();
if (err.signal === 'SIGINT') { const err = error as ExecException;
console.log(red('Installation aborted.')); if (err.signal === 'SIGINT') {
} else { console.log(red('Installation aborted.'));
console.error(red('Installation failed.')); } else {
process.exit(1); console.error(red('Installation failed.'));
process.exit(1);
}
} }
} }