chore(deps): replace chalk and rimraf with builtin functions (#1879)
				
					
				
			Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
		@@ -1,11 +1,11 @@
 | 
			
		||||
import { promises } from "fs"
 | 
			
		||||
import path from "path"
 | 
			
		||||
import esbuild from "esbuild"
 | 
			
		||||
import chalk from "chalk"
 | 
			
		||||
import { styleText } from "util"
 | 
			
		||||
import { sassPlugin } from "esbuild-sass-plugin"
 | 
			
		||||
import fs from "fs"
 | 
			
		||||
import { intro, outro, select, text } from "@clack/prompts"
 | 
			
		||||
import { rimraf } from "rimraf"
 | 
			
		||||
import { rm } from "fs/promises"
 | 
			
		||||
import chokidar from "chokidar"
 | 
			
		||||
import prettyBytes from "pretty-bytes"
 | 
			
		||||
import { execSync, spawnSync } from "child_process"
 | 
			
		||||
@@ -48,7 +48,7 @@ function resolveContentPath(contentPath) {
 | 
			
		||||
 */
 | 
			
		||||
export async function handleCreate(argv) {
 | 
			
		||||
  console.log()
 | 
			
		||||
  intro(chalk.bgGreen.black(` Quartz v${version} `))
 | 
			
		||||
  intro(styleText(["bgGreen", "black"], ` Quartz v${version} `))
 | 
			
		||||
  const contentFolder = resolveContentPath(argv.directory)
 | 
			
		||||
  let setupStrategy = argv.strategy?.toLowerCase()
 | 
			
		||||
  let linkResolutionStrategy = argv.links?.toLowerCase()
 | 
			
		||||
@@ -61,12 +61,16 @@ export async function handleCreate(argv) {
 | 
			
		||||
      // Error handling
 | 
			
		||||
      if (!sourceDirectory) {
 | 
			
		||||
        outro(
 | 
			
		||||
          chalk.red(
 | 
			
		||||
            `Setup strategies (arg '${chalk.yellow(
 | 
			
		||||
          styleText(
 | 
			
		||||
            "red",
 | 
			
		||||
            `Setup strategies (arg '${styleText(
 | 
			
		||||
              "yellow",
 | 
			
		||||
              `-${CreateArgv.strategy.alias[0]}`,
 | 
			
		||||
            )}') other than '${chalk.yellow(
 | 
			
		||||
            )}') other than '${styleText(
 | 
			
		||||
              "yellow",
 | 
			
		||||
              "new",
 | 
			
		||||
            )}' require content folder argument ('${chalk.yellow(
 | 
			
		||||
            )}' require content folder argument ('${styleText(
 | 
			
		||||
              "yellow",
 | 
			
		||||
              `-${CreateArgv.source.alias[0]}`,
 | 
			
		||||
            )}') to be set`,
 | 
			
		||||
          ),
 | 
			
		||||
@@ -75,19 +79,23 @@ export async function handleCreate(argv) {
 | 
			
		||||
      } else {
 | 
			
		||||
        if (!fs.existsSync(sourceDirectory)) {
 | 
			
		||||
          outro(
 | 
			
		||||
            chalk.red(
 | 
			
		||||
              `Input directory to copy/symlink 'content' from not found ('${chalk.yellow(
 | 
			
		||||
            styleText(
 | 
			
		||||
              "red",
 | 
			
		||||
              `Input directory to copy/symlink 'content' from not found ('${styleText(
 | 
			
		||||
                "yellow",
 | 
			
		||||
                sourceDirectory,
 | 
			
		||||
              )}', invalid argument "${chalk.yellow(`-${CreateArgv.source.alias[0]}`)})`,
 | 
			
		||||
              )}', invalid argument "${styleText("yellow", `-${CreateArgv.source.alias[0]}`)})`,
 | 
			
		||||
            ),
 | 
			
		||||
          )
 | 
			
		||||
          process.exit(1)
 | 
			
		||||
        } else if (!fs.lstatSync(sourceDirectory).isDirectory()) {
 | 
			
		||||
          outro(
 | 
			
		||||
            chalk.red(
 | 
			
		||||
              `Source directory to copy/symlink 'content' from is not a directory (found file at '${chalk.yellow(
 | 
			
		||||
            styleText(
 | 
			
		||||
              "red",
 | 
			
		||||
              `Source directory to copy/symlink 'content' from is not a directory (found file at '${styleText(
 | 
			
		||||
                "yellow",
 | 
			
		||||
                sourceDirectory,
 | 
			
		||||
              )}', invalid argument ${chalk.yellow(`-${CreateArgv.source.alias[0]}`)}")`,
 | 
			
		||||
              )}', invalid argument ${styleText("yellow", `-${CreateArgv.source.alias[0]}`)}")`,
 | 
			
		||||
            ),
 | 
			
		||||
          )
 | 
			
		||||
          process.exit(1)
 | 
			
		||||
@@ -119,7 +127,7 @@ export async function handleCreate(argv) {
 | 
			
		||||
    if (contentStat.isSymbolicLink()) {
 | 
			
		||||
      await fs.promises.unlink(contentFolder)
 | 
			
		||||
    } else {
 | 
			
		||||
      await rimraf(contentFolder)
 | 
			
		||||
      await rm(contentFolder, { recursive: true, force: true })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -229,7 +237,7 @@ export async function handleBuild(argv) {
 | 
			
		||||
    argv.watch = true
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  console.log(chalk.bgGreen.black(`\n Quartz v${version} \n`))
 | 
			
		||||
  console.log(`\n${styleText(["bgGreen", "black"], ` Quartz v${version} `)} \n`)
 | 
			
		||||
  const ctx = await esbuild.context({
 | 
			
		||||
    entryPoints: [fp],
 | 
			
		||||
    outfile: cacheFile,
 | 
			
		||||
@@ -304,13 +312,13 @@ export async function handleBuild(argv) {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (cleanupBuild) {
 | 
			
		||||
      console.log(chalk.yellow("Detected a source code change, doing a hard rebuild..."))
 | 
			
		||||
      console.log(styleText("yellow", "Detected a source code change, doing a hard rebuild..."))
 | 
			
		||||
      await cleanupBuild()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const result = await ctx.rebuild().catch((err) => {
 | 
			
		||||
      console.error(`${chalk.red("Couldn't parse Quartz configuration:")} ${fp}`)
 | 
			
		||||
      console.log(`Reason: ${chalk.grey(err)}`)
 | 
			
		||||
      console.error(`${styleText("red", "Couldn't parse Quartz configuration:")} ${fp}`)
 | 
			
		||||
      console.log(`Reason: ${styleText("grey", err)}`)
 | 
			
		||||
      process.exit(1)
 | 
			
		||||
    })
 | 
			
		||||
    release()
 | 
			
		||||
@@ -348,7 +356,8 @@ export async function handleBuild(argv) {
 | 
			
		||||
    const server = http.createServer(async (req, res) => {
 | 
			
		||||
      if (argv.baseDir && !req.url?.startsWith(argv.baseDir)) {
 | 
			
		||||
        console.log(
 | 
			
		||||
          chalk.red(
 | 
			
		||||
          styleText(
 | 
			
		||||
            "red",
 | 
			
		||||
            `[404] ${req.url} (warning: link outside of site, this is likely a Quartz bug)`,
 | 
			
		||||
          ),
 | 
			
		||||
        )
 | 
			
		||||
@@ -383,8 +392,10 @@ export async function handleBuild(argv) {
 | 
			
		||||
        })
 | 
			
		||||
        const status = res.statusCode
 | 
			
		||||
        const statusString =
 | 
			
		||||
          status >= 200 && status < 300 ? chalk.green(`[${status}]`) : chalk.red(`[${status}]`)
 | 
			
		||||
        console.log(statusString + chalk.grey(` ${argv.baseDir}${req.url}`))
 | 
			
		||||
          status >= 200 && status < 300
 | 
			
		||||
            ? styleText("green", `[${status}]`)
 | 
			
		||||
            : styleText("red", `[${status}]`)
 | 
			
		||||
        console.log(statusString + styleText("grey", ` ${argv.baseDir}${req.url}`))
 | 
			
		||||
        release()
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
@@ -393,7 +404,10 @@ export async function handleBuild(argv) {
 | 
			
		||||
        res.writeHead(302, {
 | 
			
		||||
          Location: newFp,
 | 
			
		||||
        })
 | 
			
		||||
        console.log(chalk.yellow("[302]") + chalk.grey(` ${argv.baseDir}${req.url} -> ${newFp}`))
 | 
			
		||||
        console.log(
 | 
			
		||||
          styleText("yellow", "[302]") +
 | 
			
		||||
            styleText("grey", ` ${argv.baseDir}${req.url} -> ${newFp}`),
 | 
			
		||||
        )
 | 
			
		||||
        res.end()
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
@@ -443,7 +457,8 @@ export async function handleBuild(argv) {
 | 
			
		||||
    const wss = new WebSocketServer({ port: argv.wsPort })
 | 
			
		||||
    wss.on("connection", (ws) => connections.push(ws))
 | 
			
		||||
    console.log(
 | 
			
		||||
      chalk.cyan(
 | 
			
		||||
      styleText(
 | 
			
		||||
        "cyan",
 | 
			
		||||
        `Started a Quartz server listening at http://localhost:${argv.port}${argv.baseDir}`,
 | 
			
		||||
      ),
 | 
			
		||||
    )
 | 
			
		||||
@@ -467,7 +482,7 @@ export async function handleBuild(argv) {
 | 
			
		||||
      .on("change", () => build(clientRefresh))
 | 
			
		||||
      .on("unlink", () => build(clientRefresh))
 | 
			
		||||
 | 
			
		||||
    console.log(chalk.grey("hint: exit with ctrl+c"))
 | 
			
		||||
    console.log(styleText("grey", "hint: exit with ctrl+c"))
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -477,7 +492,7 @@ export async function handleBuild(argv) {
 | 
			
		||||
 */
 | 
			
		||||
export async function handleUpdate(argv) {
 | 
			
		||||
  const contentFolder = resolveContentPath(argv.directory)
 | 
			
		||||
  console.log(chalk.bgGreen.black(`\n Quartz v${version} \n`))
 | 
			
		||||
  console.log(`\n${styleText(["bgGreen", "black"], ` Quartz v${version} `)} \n`)
 | 
			
		||||
  console.log("Backing up your content")
 | 
			
		||||
  execSync(
 | 
			
		||||
    `git remote show upstream || git remote add upstream https://github.com/jackyzha0/quartz.git`,
 | 
			
		||||
@@ -490,7 +505,7 @@ export async function handleUpdate(argv) {
 | 
			
		||||
  try {
 | 
			
		||||
    gitPull(UPSTREAM_NAME, QUARTZ_SOURCE_BRANCH)
 | 
			
		||||
  } catch {
 | 
			
		||||
    console.log(chalk.red("An error occurred above while pulling updates."))
 | 
			
		||||
    console.log(styleText("red", "An error occurred above while pulling updates."))
 | 
			
		||||
    await popContentFolder(contentFolder)
 | 
			
		||||
    return
 | 
			
		||||
  }
 | 
			
		||||
@@ -517,9 +532,9 @@ export async function handleUpdate(argv) {
 | 
			
		||||
 | 
			
		||||
  const res = spawnSync("npm", ["i"], opts)
 | 
			
		||||
  if (res.status === 0) {
 | 
			
		||||
    console.log(chalk.green("Done!"))
 | 
			
		||||
    console.log(styleText("green", "Done!"))
 | 
			
		||||
  } else {
 | 
			
		||||
    console.log(chalk.red("An error occurred above while installing dependencies."))
 | 
			
		||||
    console.log(styleText("red", "An error occurred above while installing dependencies."))
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -538,14 +553,14 @@ export async function handleRestore(argv) {
 | 
			
		||||
 */
 | 
			
		||||
export async function handleSync(argv) {
 | 
			
		||||
  const contentFolder = resolveContentPath(argv.directory)
 | 
			
		||||
  console.log(chalk.bgGreen.black(`\n Quartz v${version} \n`))
 | 
			
		||||
  console.log(`\n${styleText(["bgGreen", "black"], ` Quartz v${version} `)}\n`)
 | 
			
		||||
  console.log("Backing up your content")
 | 
			
		||||
 | 
			
		||||
  if (argv.commit) {
 | 
			
		||||
    const contentStat = await fs.promises.lstat(contentFolder)
 | 
			
		||||
    if (contentStat.isSymbolicLink()) {
 | 
			
		||||
      const linkTarg = await fs.promises.readlink(contentFolder)
 | 
			
		||||
      console.log(chalk.yellow("Detected symlink, trying to dereference before committing"))
 | 
			
		||||
      console.log(styleText("yellow", "Detected symlink, trying to dereference before committing"))
 | 
			
		||||
 | 
			
		||||
      // stash symlink file
 | 
			
		||||
      await stashContentFolder(contentFolder)
 | 
			
		||||
@@ -580,7 +595,7 @@ export async function handleSync(argv) {
 | 
			
		||||
    try {
 | 
			
		||||
      gitPull(ORIGIN_NAME, QUARTZ_SOURCE_BRANCH)
 | 
			
		||||
    } catch {
 | 
			
		||||
      console.log(chalk.red("An error occurred above while pulling updates."))
 | 
			
		||||
      console.log(styleText("red", "An error occurred above while pulling updates."))
 | 
			
		||||
      await popContentFolder(contentFolder)
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
@@ -594,10 +609,12 @@ export async function handleSync(argv) {
 | 
			
		||||
      stdio: "inherit",
 | 
			
		||||
    })
 | 
			
		||||
    if (res.status !== 0) {
 | 
			
		||||
      console.log(chalk.red(`An error occurred above while pushing to remote ${ORIGIN_NAME}.`))
 | 
			
		||||
      console.log(
 | 
			
		||||
        styleText("red", `An error occurred above while pushing to remote ${ORIGIN_NAME}.`),
 | 
			
		||||
      )
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  console.log(chalk.green("Done!"))
 | 
			
		||||
  console.log(styleText("green", "Done!"))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
import { isCancel, outro } from "@clack/prompts"
 | 
			
		||||
import chalk from "chalk"
 | 
			
		||||
import { styleText } from "util"
 | 
			
		||||
import { contentCacheFolder } from "./constants.js"
 | 
			
		||||
import { spawnSync } from "child_process"
 | 
			
		||||
import fs from "fs"
 | 
			
		||||
@@ -14,7 +14,7 @@ export function escapePath(fp) {
 | 
			
		||||
 | 
			
		||||
export function exitIfCancel(val) {
 | 
			
		||||
  if (isCancel(val)) {
 | 
			
		||||
    outro(chalk.red("Exiting"))
 | 
			
		||||
    outro(styleText("red", "Exiting"))
 | 
			
		||||
    process.exit(0)
 | 
			
		||||
  } else {
 | 
			
		||||
    return val
 | 
			
		||||
@@ -36,9 +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(chalk.red(`Error while pulling updates: ${out.stderr}`))
 | 
			
		||||
    throw new Error(styleText("red", `Error while pulling updates: ${out.stderr}`))
 | 
			
		||||
  } else if (out.status !== 0) {
 | 
			
		||||
    throw new Error(chalk.red("Error while pulling updates"))
 | 
			
		||||
    throw new Error(styleText("red", "Error while pulling updates"))
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user