// export GITWIKIWEB=/srv/git/GitWikiWeb
// git archive --remote=$GITWIKIWEB HEAD build.js \
// | tar -xO \
-// | deno run -A - ~/public/wiki $GITWIKIWEB
+// | deno run -A - ~/public/wiki $GITWIKIWEB current
//
// The directory `~/public/wiki` (or whatever you specify as the first
// argument to `deno run -A -`) **will be deleted** and a new static
const DESTINATION = Deno.args[0] ?? "~/public/wiki";
const REMOTE = Deno.args[1] ?? "/srv/git/GitWikiWeb";
+const REV = Deno.args[2] ?? "HEAD";
const READ_ONLY = {
configurable: false,
const getRemoteContent = async (pathName) => {
const getArchive = new Deno.Command("git", {
- args: ["archive", `--remote=${REMOTE}`, "HEAD", pathName],
+ args: ["archive", `--remote=${REMOTE}`, REV, pathName],
stdout: "piped",
stderr: "piped",
}).spawn();
e.children.push(...links_section);
},
},
- emph: {
- enter: (_) => {},
- exit: (e) => {
- const attributes = e.attributes ?? NIL;
- const { as } = attributes;
- if (as) {
- delete attributes.as;
- if (
- as == "b" || as == "cite" || as == "i" || as == "u"
- ) {
- return [
- rawInline`<${as}>`,
- ...e.children,
- rawInline`</${as}>`,
- ];
- } else {
- /* do nothing */
- }
- } else {
- /* do nothing */
- }
- },
- },
hard_break: {
enter: (_) => {
if (titleSoFar != null) {
}
}
+{
+ // Patches for Djot HTML renderer.
+ const { HTMLRenderer: { prototype: htmlRendererPrototype } } = djot;
+ const { inTags: upstreamInTags } = htmlRendererPrototype;
+ htmlRendererPrototype.inTags = function (
+ tag,
+ node,
+ newlines,
+ extraAttrs = undefined,
+ ) {
+ const attributes = node.attributes ?? NIL;
+ if ("as" in attributes) {
+ const newTag = attributes.as;
+ delete attributes.as;
+ return upstreamInTags.call(
+ this,
+ newTag,
+ node,
+ newlines,
+ extraAttrs,
+ );
+ } else {
+ return upstreamInTags.call(
+ this,
+ tag,
+ node,
+ newlines,
+ extraAttrs,
+ );
+ }
+ };
+}
{
const config = await getRemoteContent("config.yaml").then((yaml) =>
parseYaml(yaml, { schema: JSON_SCHEMA })
);
const ls = new Deno.Command("git", {
- args: ["ls-tree", "-rz", "live"],
+ args: ["ls-tree", "-rz", "HEAD"],
stdout: "piped",
stderr: "piped",
}).spawn();
}
const results = new Array(6);
const seen = new Set();
- let recency = 5;
+ const maxRecency = Math.max(config.max_recency | 0, 0);
+ let recency = maxRecency;
let current;
do {
const show = new Deno.Command("git", {
"show",
"-s",
"--format=%H%x00%cI%x00%cD",
- recency ? `HEAD~${5 - recency}` : commit,
+ recency ? `HEAD~${maxRecency - recency}` : commit,
],
stdout: "piped",
stderr: "piped",