0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2024-12-23 21:53:55 -05:00

[create-astro] Error on --template that does not exist (#6677)

* Revert "Revert accidental create-astro fix"

This reverts commit c13d428a78.

* chore: changeset
This commit is contained in:
Ben Holmes 2023-03-28 07:08:43 -04:00 committed by GitHub
parent 4ddec1cd8c
commit 4a32620600
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 5 deletions

View file

@ -0,0 +1,5 @@
---
'create-astro': patch
---
Fix: Log an error when passing a `--template` that does not exist

View file

@ -35,8 +35,13 @@ export async function template(ctx: Pick<Context, 'template' | 'prompt' | 'dryRu
while: () => while: () =>
copyTemplate(ctx.template!, ctx as Context).catch((e) => { copyTemplate(ctx.template!, ctx as Context).catch((e) => {
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
error('error', e); if (e instanceof Error) {
error('error', e.message);
process.exit(1); process.exit(1);
} else {
error('error', 'Unable to clone template.');
process.exit(1);
}
}), }),
}); });
} else { } else {
@ -81,11 +86,18 @@ export default async function copyTemplate(tmpl: string, ctx: Context) {
} catch (err: any) { } catch (err: any) {
fs.rmdirSync(ctx.cwd); fs.rmdirSync(ctx.cwd);
if (err.message.includes('404')) { if (err.message.includes('404')) {
await error('Error', `Template ${color.reset(tmpl)} ${color.dim('does not exist!')}`); throw new Error(`Template ${color.reset(tmpl)} ${color.dim('does not exist!')}`);
} else { } else {
console.error(err.message); throw new Error(err.message);
} }
ctx.exit(1); }
// It's possible the repo exists (ex. `withastro/astro`),
// But the template route is invalid (ex. `withastro/astro/examples/DNE`).
// `giget` doesn't throw for this case,
// so check if the directory is still empty as a heuristic.
if (fs.readdirSync(ctx.cwd).length === 0) {
throw new Error(`Template ${color.reset(tmpl)} ${color.dim('is empty!')}`);
} }
// Post-process in parallel // Post-process in parallel