From 1b92440009965853241d6db44ae233cf62522a75 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Mon, 11 Dec 2023 10:38:55 -0800 Subject: [PATCH] fix: better error handling on spawnsync failures --- content/.gitkeep | 0 quartz/cli/handlers.js | 34 +++++++++++++++++++++++++++++----- quartz/cli/helpers.js | 4 +++- 3 files changed, 32 insertions(+), 6 deletions(-) delete mode 100644 content/.gitkeep diff --git a/content/.gitkeep b/content/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/quartz/cli/handlers.js b/quartz/cli/handlers.js index 7a83c5d..8fd0912 100644 --- a/quartz/cli/handlers.js +++ b/quartz/cli/handlers.js @@ -443,11 +443,23 @@ export async function handleUpdate(argv) { console.log( "Pulling updates... you may need to resolve some `git` conflicts if you've made changes to components or plugins.", ) - gitPull(UPSTREAM_NAME, QUARTZ_SOURCE_BRANCH) + + try { + gitPull(UPSTREAM_NAME, QUARTZ_SOURCE_BRANCH) + } catch { + console.log(chalk.red("An error occured above while pulling updates.")) + await popContentFolder(contentFolder) + return + } + await popContentFolder(contentFolder) console.log("Ensuring dependencies are up to date") - spawnSync("npm", ["i"], { stdio: "inherit" }) - console.log(chalk.green("Done!")) + const res = spawnSync("npm", ["i"], { stdio: "inherit" }) + if (res.status === 0) { + console.log(chalk.green("Done!")) + } else { + console.log(chalk.red("An error occurred above while installing dependencies.")) + } } /** @@ -504,13 +516,25 @@ export async function handleSync(argv) { console.log( "Pulling updates from your repository. You may need to resolve some `git` conflicts if you've made changes to components or plugins.", ) - gitPull(ORIGIN_NAME, QUARTZ_SOURCE_BRANCH) + try { + gitPull(ORIGIN_NAME, QUARTZ_SOURCE_BRANCH) + } catch { + console.log(chalk.red("An error occured above while pulling updates.")) + await popContentFolder(contentFolder) + return + } } await popContentFolder(contentFolder) if (argv.push) { console.log("Pushing your changes") - spawnSync("git", ["push", "-f", ORIGIN_NAME, QUARTZ_SOURCE_BRANCH], { stdio: "inherit" }) + const res = spawnSync("git", ["push", "-f", ORIGIN_NAME, QUARTZ_SOURCE_BRANCH], { + stdio: "inherit", + }) + if (res.status !== 0) { + console.log(chalk.red(`An error occurred above while pushing to remote ${ORIGIN_NAME}.`)) + return + } } console.log(chalk.green("Done!")) diff --git a/quartz/cli/helpers.js b/quartz/cli/helpers.js index b07d19e..702a1b7 100644 --- a/quartz/cli/helpers.js +++ b/quartz/cli/helpers.js @@ -36,7 +36,9 @@ export function gitPull(origin, branch) { const flags = ["--no-rebase", "--autostash", "-s", "recursive", "-X", "ours", "--no-edit"] const out = spawnSync("git", ["pull", ...flags, origin, branch], { stdio: "inherit" }) if (out.stderr) { - throw new Error(`Error while pulling updates: ${out.stderr}`) + throw new Error(chalk.red(`Error while pulling updates: ${out.stderr}`)) + } else if (out.status !== 0) { + throw new Error(chalk.red("Error while pulling updates")) } }