From ae2e3b463a91d94caa8bdf62e5c3a3d726b8b4e4 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Sun, 23 Jul 2023 18:49:26 +0000
Subject: [PATCH] improve error handling while serving
---
quartz/build.ts | 47 +++++++++++++++++++++++++++++++----------------
1 files changed, 31 insertions(+), 16 deletions(-)
diff --git a/quartz/build.ts b/quartz/build.ts
index df83f6e..e5bfcaa 100644
--- a/quartz/build.ts
+++ b/quartz/build.ts
@@ -23,7 +23,7 @@
port: number
}
-export default async function buildQuartz(argv: Argv, version: string) {
+async function buildQuartz(argv: Argv, version: string) {
console.log(chalk.bgGreen.black(`\n Quartz v${version} \n`))
const perf = new PerfTimer()
const output = argv.output
@@ -82,23 +82,29 @@
if (!ignored(fp)) {
console.log(chalk.yellow(`Detected change in ${fp}, rebuilding...`))
const fullPath = `${argv.directory}${path.sep}${fp}` as FilePath
- if (action === "add" || action === "change") {
- const [parsedContent] = await parseMarkdown(
- cfg.plugins.transformers,
- argv.directory,
- [fullPath],
- argv.verbose,
- )
- contentMap.set(fullPath, parsedContent)
- } else if (action === "unlink") {
- contentMap.delete(fullPath)
+
+ try {
+ if (action === "add" || action === "change") {
+ const [parsedContent] = await parseMarkdown(
+ cfg.plugins.transformers,
+ argv.directory,
+ [fullPath],
+ argv.verbose,
+ )
+ contentMap.set(fullPath, parsedContent)
+ } else if (action === "unlink") {
+ contentMap.delete(fullPath)
+ }
+
+ await rimraf(output)
+ const parsedFiles = [...contentMap.values()]
+ const filteredContent = filterContent(cfg.plugins.filters, parsedFiles, argv.verbose)
+ await emitContent(argv.directory, output, cfg, filteredContent, argv.serve, argv.verbose)
+ console.log(chalk.green(`Done rebuilding in ${perf.timeSince("rebuild")}`))
+ } catch {
+ console.log(chalk.yellow(`Rebuild failed. Waiting on a change to fix the error...`))
}
- await rimraf(output)
- const parsedFiles = [...contentMap.values()]
- const filteredContent = filterContent(cfg.plugins.filters, parsedFiles, argv.verbose)
- await emitContent(argv.directory, output, cfg, filteredContent, argv.serve, argv.verbose)
- console.log(chalk.green(`Done rebuilding in ${perf.timeSince("rebuild")}`))
connections.forEach((conn) => conn.send("rebuild"))
}
}
@@ -133,3 +139,12 @@
console.log("hint: exit with ctrl+c")
}
}
+
+export default async (argv: Argv, version: string) => {
+ try {
+ await buildQuartz(argv, version)
+ } catch {
+ console.log(chalk.red("\nExiting Quartz due to a fatal error"))
+ process.exit(1)
+ }
+}
--
Gitblit v1.10.0