From d98a3a088a76e5965a8fbf51a812e169abe1dde8 Mon Sep 17 00:00:00 2001
From: Emile Bangma <ewjbangma@hotmail.com>
Date: Tue, 22 Oct 2024 20:38:16 +0000
Subject: [PATCH] Merge pull request #1543 from saberzero1/draft-publish-string

---
 quartz/cli/handlers.js |   42 ++++++++++++++++++++++++++++++------------
 1 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/quartz/cli/handlers.js b/quartz/cli/handlers.js
index 8460dad..ed1c0e2 100644
--- a/quartz/cli/handlers.js
+++ b/quartz/cli/handlers.js
@@ -5,6 +5,7 @@
 import { sassPlugin } from "esbuild-sass-plugin"
 import fs from "fs"
 import { intro, outro, select, text } from "@clack/prompts"
+import { rimraf } from "rimraf"
 import chokidar from "chokidar"
 import prettyBytes from "pretty-bytes"
 import { execSync, spawnSync } from "child_process"
@@ -20,7 +21,6 @@
   gitPull,
   popContentFolder,
   stashContentFolder,
-  rmrf,
 } from "./helpers.js"
 import {
   UPSTREAM_NAME,
@@ -109,7 +109,7 @@
     if (contentStat.isSymbolicLink()) {
       await fs.promises.unlink(contentFolder)
     } else {
-      await rmrf(contentFolder)
+      await rimraf(contentFolder)
     }
   }
 
@@ -168,22 +168,20 @@
     // get a preferred link resolution strategy
     linkResolutionStrategy = exitIfCancel(
       await select({
-        message: `Choose how Quartz should resolve links in your content. You can change this later in \`quartz.config.ts\`.`,
+        message: `Choose how Quartz should resolve links in your content. This should match Obsidian's link format. You can change this later in \`quartz.config.ts\`.`,
         options: [
           {
-            value: "absolute",
-            label: "Treat links as absolute path",
-            hint: "for content made for Quartz 3 and Hugo",
-          },
-          {
             value: "shortest",
             label: "Treat links as shortest path",
-            hint: "for most Obsidian vaults",
+            hint: "(default)",
+          },
+          {
+            value: "absolute",
+            label: "Treat links as absolute path",
           },
           {
             value: "relative",
             label: "Treat links as relative paths",
-            hint: "for just normal Markdown files",
           },
         ],
       }),
@@ -202,6 +200,7 @@
   // setup remote
   execSync(
     `git remote show upstream || git remote add upstream https://github.com/jackyzha0/quartz.git`,
+    { stdio: "ignore" },
   )
 
   outro(`You're all set! Not sure what to do next? Try:
@@ -258,6 +257,7 @@
               },
               write: false,
               bundle: true,
+              minify: true,
               platform: "browser",
               format: "esm",
             })
@@ -347,7 +347,7 @@
           directoryListing: false,
           headers: [
             {
-              source: "**/*.html",
+              source: "**/*.*",
               headers: [{ key: "Content-Disposition", value: "inline" }],
             },
           ],
@@ -457,7 +457,25 @@
 
   await popContentFolder(contentFolder)
   console.log("Ensuring dependencies are up to date")
-  const res = spawnSync("npm", ["i"], { stdio: "inherit" })
+
+  /*
+  On Windows, if the command `npm` is really `npm.cmd', this call fails
+  as it will be unable to find `npm`. This is often the case on systems
+  where `npm` is installed via a package manager.
+
+  This means `npx quartz update` will not actually update dependencies
+  on Windows, without a manual `npm i` from the caller.
+
+  However, by spawning a shell, we are able to call `npm.cmd`.
+  See: https://nodejs.org/api/child_process.html#spawning-bat-and-cmd-files-on-windows
+  */
+
+  const opts = { stdio: "inherit" }
+  if (process.platform === "win32") {
+    opts.shell = true
+  }
+
+  const res = spawnSync("npm", ["i"], opts)
   if (res.status === 0) {
     console.log(chalk.green("Done!"))
   } else {

--
Gitblit v1.10.0