summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Ben Holmes <hey@bholmes.dev> 2023-03-28 07:08:43 -0400
committerGravatar GitHub <noreply@github.com> 2023-03-28 07:08:43 -0400
commit4a32620600966ea89ddb5e1669d89a53e85ccf9a (patch)
treef46838fcf7c137e7e1773761d3728286d0d5bc34
parent4ddec1cd8c6abe0a58cd9887884e51e7aacbe3f8 (diff)
downloadastro-4a32620600966ea89ddb5e1669d89a53e85ccf9a.tar.gz
astro-4a32620600966ea89ddb5e1669d89a53e85ccf9a.tar.zst
astro-4a32620600966ea89ddb5e1669d89a53e85ccf9a.zip
[create-astro] Error on `--template` that does not exist (#6677)
* Revert "Revert accidental create-astro fix" This reverts commit c13d428a7804b5b9809dbea94a1b17c36714a1e1. * chore: changeset
-rw-r--r--.changeset/bright-apricots-kiss.md5
-rw-r--r--packages/create-astro/src/actions/template.ts22
2 files changed, 22 insertions, 5 deletions
diff --git a/.changeset/bright-apricots-kiss.md b/.changeset/bright-apricots-kiss.md
new file mode 100644
index 000000000..483a70e50
--- /dev/null
+++ b/.changeset/bright-apricots-kiss.md
@@ -0,0 +1,5 @@
+---
+'create-astro': patch
+---
+
+Fix: Log an error when passing a `--template` that does not exist
diff --git a/packages/create-astro/src/actions/template.ts b/packages/create-astro/src/actions/template.ts
index 4f7e751e9..aa0363694 100644
--- a/packages/create-astro/src/actions/template.ts
+++ b/packages/create-astro/src/actions/template.ts
@@ -35,8 +35,13 @@ export async function template(ctx: Pick<Context, 'template' | 'prompt' | 'dryRu
while: () =>
copyTemplate(ctx.template!, ctx as Context).catch((e) => {
// eslint-disable-next-line no-console
- error('error', e);
- process.exit(1);
+ if (e instanceof Error) {
+ error('error', e.message);
+ process.exit(1);
+ } else {
+ error('error', 'Unable to clone template.');
+ process.exit(1);
+ }
}),
});
} else {
@@ -81,11 +86,18 @@ export default async function copyTemplate(tmpl: string, ctx: Context) {
} catch (err: any) {
fs.rmdirSync(ctx.cwd);
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 {
- 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