From ad6ce0d73fbd015e00e59ec30bda3cc8de777832 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Tue, 30 May 2023 15:02:20 +0000
Subject: [PATCH] plugin integration round 2
---
quartz/bootstrap.mjs | 80 +++++++++++++++++++++++++++++++++++++++
1 files changed, 79 insertions(+), 1 deletions(-)
diff --git a/quartz/bootstrap.mjs b/quartz/bootstrap.mjs
index 0f66ea2..a8c9bca 100755
--- a/quartz/bootstrap.mjs
+++ b/quartz/bootstrap.mjs
@@ -1,2 +1,80 @@
#!/usr/bin/env node
-console.log('hello world')
+import { readFileSync } from 'fs'
+import yargs from 'yargs'
+import { hideBin } from 'yargs/helpers'
+import esbuild from 'esbuild'
+import chalk from 'chalk'
+import requireFromString from 'require-from-string'
+
+const fp = "./quartz.config.ts"
+const { version } = JSON.parse(readFileSync("./package.json").toString())
+
+export const BuildArgv = {
+ output: {
+ string: true,
+ alias: ['o'],
+ default: 'public',
+ describe: 'output folder for files'
+ },
+ clean: {
+ boolean: true,
+ default: false,
+ describe: 'clean the output folder before building'
+ },
+ serve: {
+ boolean: true,
+ default: false,
+ describe: 'run a local server to preview your Quartz'
+ },
+ port: {
+ number: true,
+ default: 8080,
+ describe: 'port to serve Quartz on'
+ },
+ directory: {
+ string: true,
+ alias: ['d'],
+ default: 'content',
+ describe: 'directory to look for content files'
+ },
+ verbose: {
+ boolean: true,
+ alias: ['v'],
+ default: false,
+ describe: 'print out extra logging information'
+ }
+}
+
+yargs(hideBin(process.argv))
+ .scriptName("quartz")
+ .version(version)
+ .usage('$0 <cmd> [args]')
+ .command('build', 'Build Quartz into a bundle of static HTML files', BuildArgv, async (argv) => {
+ const out = await esbuild.build({
+ entryPoints: [fp],
+ write: false,
+ minifySyntax: true,
+ minifyWhitespace: true,
+ bundle: true,
+ keepNames: true,
+ platform: "node",
+ format: "cjs",
+ jsx: "automatic",
+ jsxImportSource: "preact",
+ external: ["@napi-rs/simple-git"]
+ }).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)
+ })
+
+ const mod = out.outputFiles[0].text
+ const init = requireFromString(mod, fp).default
+ init(argv, version)
+ })
+ .showHelpOnFail(false)
+ .help()
+ .strict()
+ .demandCommand()
+ .argv
--
Gitblit v1.10.0