kabirgh
2024-01-15 8eec47c340d48d9b45970a88da0aaff4e216a7e2
fix: rebuild errors on windows (#692)

1 files added
3 files modified
32 ■■■■ changed files
quartz/build.ts 6 ●●●● patch | view | raw | blame | history
quartz/cli/handlers.js 4 ●●●● patch | view | raw | blame | history
quartz/cli/helpers.js 9 ●●●●● patch | view | raw | blame | history
quartz/util/fs.ts 13 ●●●●● patch | view | raw | blame | history
quartz/build.ts
@@ -2,7 +2,6 @@
sourceMapSupport.install(options)
import path from "path"
import { PerfTimer } from "./util/perf"
import { rimraf } from "rimraf"
import { isGitIgnored } from "globby"
import chalk from "chalk"
import { parseMarkdown } from "./processors/parse"
@@ -13,6 +12,7 @@
import chokidar from "chokidar"
import { ProcessedContent } from "./plugins/vfile"
import { Argv, BuildCtx } from "./util/ctx"
import { rmrf } from "./util/fs"
import { glob, toPosixPath } from "./util/glob"
import { trace } from "./util/trace"
import { options } from "./util/sourcemap"
@@ -40,7 +40,7 @@
  const release = await mut.acquire()
  perf.addEvent("clean")
  await rimraf(output)
  await rmrf(output)
  console.log(`Cleaned output directory \`${output}\` in ${perf.timeSince("clean")}`)
  perf.addEvent("glob")
@@ -145,7 +145,7 @@
      // TODO: we can probably traverse the link graph to figure out what's safe to delete here
      // instead of just deleting everything
      await rimraf(argv.output)
      await rmrf(argv.output)
      await emitContent(ctx, filteredContent)
      console.log(chalk.green(`Done rebuilding in ${perf.timeSince()}`))
    } catch (err) {
quartz/cli/handlers.js
@@ -5,7 +5,6 @@
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"
@@ -21,6 +20,7 @@
  gitPull,
  popContentFolder,
  stashContentFolder,
  rmrf,
} from "./helpers.js"
import {
  UPSTREAM_NAME,
@@ -109,7 +109,7 @@
    if (contentStat.isSymbolicLink()) {
      await fs.promises.unlink(contentFolder)
    } else {
      await rimraf(contentFolder)
      await rmrf(contentFolder)
    }
  }
quartz/cli/helpers.js
@@ -3,6 +3,7 @@
import { contentCacheFolder } from "./constants.js"
import { spawnSync } from "child_process"
import fs from "fs"
import { rimraf } from "rimraf"
export function escapePath(fp) {
  return fp
@@ -52,3 +53,11 @@
  })
  await fs.promises.rm(contentCacheFolder, { force: true, recursive: true })
}
export async function rmrf(path) {
  if (os.platform() == "win32") {
    return rimraf.windows(path)
  } else {
    return rimraf(path)
  }
}
quartz/util/fs.ts
New file
@@ -0,0 +1,13 @@
import os from "os"
import { rimraf, RimrafAsyncOptions } from "rimraf"
export async function rmrf(
  path: string | string[],
  opt?: RimrafAsyncOptions | undefined,
): Promise<boolean> {
  if (os.platform() == "win32") {
    return rimraf.windows(path, opt)
  } else {
    return rimraf(path, opt)
  }
}