Jacky Zhao
2023-08-04 3a2eae0a16cfc275182f8a26af0a77f0e9bd07c1
quartz/bootstrap-cli.mjs
@@ -10,8 +10,10 @@
import { intro, isCancel, outro, select, text } from "@clack/prompts"
import { rimraf } from "rimraf"
import prettyBytes from "pretty-bytes"
import { spawnSync } from "child_process"
import { execSync, spawnSync } from "child_process"
import { transform as cssTransform } from "lightningcss"
const ORIGIN_NAME = "origin"
const UPSTREAM_NAME = "upstream"
const QUARTZ_SOURCE_BRANCH = "v4-alpha"
const cwd = process.cwd()
@@ -48,12 +50,6 @@
    default: true,
    describe: "push updates to your Quartz fork",
  },
  force: {
    boolean: true,
    alias: ["f"],
    default: true,
    describe: "whether to apply the --force flag to git commands",
  },
  pull: {
    boolean: true,
    default: true,
@@ -79,6 +75,11 @@
    default: 8080,
    describe: "port to serve Quartz on",
  },
  bundleInfo: {
    boolean: true,
    default: false,
    describe: "show detailed bundle information",
  },
}
function escapePath(fp) {
@@ -109,6 +110,7 @@
}
async function popContentFolder(contentFolder) {
  await fs.promises.rm(contentFolder, { force: true, recursive: true })
  await fs.promises.cp(contentCacheFolder, contentFolder, {
    force: true,
    recursive: true,
@@ -118,6 +120,11 @@
  await fs.promises.rm(contentCacheFolder, { force: true, recursive: true })
}
function gitPull(origin, branch) {
  const flags = ["-s", "recursive", "-X", "ours"]
  spawnSync("git", ["pull", ...flags, origin, branch], { stdio: "inherit" })
}
yargs(hideBin(process.argv))
  .scriptName("quartz")
  .version(version)
@@ -240,8 +247,11 @@
    console.log(
      "Pulling updates... you may need to resolve some `git` conflicts if you've made changes to components or plugins.",
    )
    spawnSync("git", ["pull", UPSTREAM_NAME, QUARTZ_SOURCE_BRANCH], { stdio: "inherit" })
    execSync(`git remote add upstream https://github.com/jackyzha0/quartz.git`, { stdio: "ignore" })
    gitPull(UPSTREAM_NAME, QUARTZ_SOURCE_BRANCH)
    await popContentFolder(contentFolder)
    console.log("Ensuring dependencies are up to date")
    spawnSync("npm", ["i"], { stdio: "inherit" })
    console.log(chalk.green("Done!"))
  })
  .command("sync", "Sync your Quartz to and from GitHub.", SyncArgv, async (argv) => {
@@ -263,16 +273,13 @@
      console.log(
        "Pulling updates from your repository. You may need to resolve some `git` conflicts if you've made changes to components or plugins.",
      )
      spawnSync("git", ["pull", "origin", QUARTZ_SOURCE_BRANCH], { stdio: "inherit" })
      gitPull(ORIGIN_NAME, QUARTZ_SOURCE_BRANCH)
    }
    await popContentFolder(contentFolder)
    if (argv.push) {
      console.log("Pushing your changes")
      const args = argv.force
        ? ["push", "-f", "origin", QUARTZ_SOURCE_BRANCH]
        : ["push", "origin", QUARTZ_SOURCE_BRANCH]
      spawnSync("git", args, { stdio: "inherit" })
      spawnSync("git", ["push", "-f", ORIGIN_NAME, QUARTZ_SOURCE_BRANCH], { stdio: "inherit" })
    }
    console.log(chalk.green("Done!"))
@@ -284,6 +291,7 @@
        outfile: path.join("quartz", cacheFile),
        bundle: true,
        keepNames: true,
        minify: true,
        platform: "node",
        format: "esm",
        jsx: "automatic",
@@ -294,6 +302,15 @@
        plugins: [
          sassPlugin({
            type: "css-text",
            cssImports: true,
            async transform(css) {
              const { code } = cssTransform({
                filename: "style.css",
                code: Buffer.from(css),
                minify: true,
              })
              return code.toString()
            },
          }),
          {
            name: "inline-script-loader",
@@ -315,6 +332,7 @@
                    sourcefile,
                  },
                  write: false,
                  minify: true,
                  bundle: true,
                  platform: "browser",
                  format: "esm",
@@ -332,13 +350,10 @@
      .catch((err) => {
        console.error(`${chalk.red("Couldn't parse Quartz configuration:")} ${fp}`)
        console.log(`Reason: ${chalk.grey(err)}`)
        console.log(
          "hint: make sure all the required dependencies are installed (run `npm install`)",
        )
        process.exit(1)
      })
    if (argv.verbose) {
    if (argv.bundleInfo) {
      const outputFileName = "quartz/.quartz-cache/transpiled-build.mjs"
      const meta = result.metafile.outputs[outputFileName]
      console.log(
@@ -346,6 +361,7 @@
          meta.bytes,
        )})`,
      )
      console.log(await esbuild.analyzeMetafile(result.metafile, { color: true }))
    }
    const { default: buildQuartz } = await import(cacheFile)