feat: Add treefmt #4

Open
Minion3665 wants to merge 2 commits from private/skyler/treefmt into main
11 changed files with 1654 additions and 1541 deletions

View file

@ -1,16 +1,16 @@
import { defineConfig } from 'astro/config'; import { defineConfig } from "astro/config";
import rehypeSanitize from 'rehype-sanitize'; import rehypeSanitize from "rehype-sanitize";
import rehypeStringify from 'rehype-stringify'; import rehypeStringify from "rehype-stringify";
import rehypeRaw from 'rehype-raw'; import rehypeRaw from "rehype-raw";
import remarkParse from 'remark-parse'; import remarkParse from "remark-parse";
import remarkRehype from 'remark-rehype'; import remarkRehype from "remark-rehype";
// https://astro.build/config // https://astro.build/config
export default defineConfig({ export default defineConfig({
markdown: { markdown: {
remarkRehype: { remarkRehype: {
allowDangerousHtml: true allowDangerousHtml: true,
// This is fine because we are using rehypeSanitize to sanitize XSS. // This is fine because we are using rehypeSanitize to sanitize XSS.
// See https://github.com/remarkjs/remark-rehype?tab=readme-ov-file#example-supporting-html-in-markdown-properly // See https://github.com/remarkjs/remark-rehype?tab=readme-ov-file#example-supporting-html-in-markdown-properly
}, },
@ -20,6 +20,6 @@ export default defineConfig({
rehypeRaw, rehypeRaw,
rehypeSanitize, rehypeSanitize,
rehypeStringify, rehypeStringify,
] ],
} },
}); });

View file

@ -86,11 +86,28 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": {
"locked": {
"lastModified": 1708475490,
"narHash": "sha256-g1v0TsWBQPX97ziznfJdWhgMyMGtoBFs102xSYO4syU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "0e74ca98a74bc7270d28838369593635a5db3260",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"snowfall-lib": "snowfall-lib", "snowfall-lib": "snowfall-lib",
"treefmt-nix": "treefmt-nix",
"wiki": "wiki" "wiki": "wiki"
} }
}, },
@ -146,6 +163,24 @@
"type": "github" "type": "github"
} }
}, },
"treefmt-nix": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1715940852,
"narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "2fba33a182602b9d49f0b2440513e5ee091d838b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"wiki": { "wiki": {
"flake": false, "flake": false,
"locked": { "locked": {

View file

@ -12,6 +12,8 @@
flake = false; flake = false;
}; };
inputs.treefmt-nix.url = "github:numtide/treefmt-nix";
outputs = outputs =
inputs: inputs:
inputs.snowfall-lib.mkFlake { inputs.snowfall-lib.mkFlake {
@ -26,6 +28,14 @@
namespace = "auxolotl--docs-site"; namespace = "auxolotl--docs-site";
}; };
outputs-builder = channels: { formatter = channels.nixpkgs.nixfmt-rfc-style; }; outputs-builder =
channels:
let
treefmt = inputs.treefmt-nix.lib.evalModule channels.nixpkgs ./treefmt.nix;
in
{
formatter = treefmt.config.build.wrapper;
checks.formatting = treefmt.config.build.check inputs.self;
};
}; };
} }

View file

@ -13,4 +13,4 @@ const { Content } = await post.render();
<div class="contents"> <div class="contents">
<Content /> <Content />
</div> </div>s

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ import { parse, join, sep } from "node:path";
export interface PageLinkData { export interface PageLinkData {
id: string; id: string;
data: { title: string; }; data: { title: string };
} }
type AllPathInformation = Map<string, CollectionEntry<"wiki"> | null>; type AllPathInformation = Map<string, CollectionEntry<"wiki"> | null>;
@ -16,16 +16,22 @@ export interface Paths {
parentDirectory: PageLinkData | null; parentDirectory: PageLinkData | null;
currentPage: PageLinkData; currentPage: PageLinkData;
}; }
export function relativePagePaths(wikiEntries: PageLinkData[], currentPath: string): Paths { export function relativePagePaths(
wikiEntries: PageLinkData[],
currentPath: string,
): Paths {
let currentPage: PageLinkData | undefined; let currentPage: PageLinkData | undefined;
let parentDirectory: PageLinkData | undefined | null; let parentDirectory: PageLinkData | undefined | null;
const siblingPages: Map<string, PageLinkData> = new Map(); const siblingPages: Map<string, PageLinkData> = new Map();
const childPages: Map<string, PageLinkData> = new Map(); const childPages: Map<string, PageLinkData> = new Map();
const currentPathParsed = parse(currentPath); const currentPathParsed = parse(currentPath);
const currentPathExtensionless = join(currentPathParsed.dir, currentPathParsed.name); const currentPathExtensionless = join(
currentPathParsed.dir,
currentPathParsed.name,
);
const childDirectoryPaths: Set<string> = new Set(); const childDirectoryPaths: Set<string> = new Set();
const siblingDirectoryPaths: Set<string> = new Set(); const siblingDirectoryPaths: Set<string> = new Set();
@ -35,7 +41,7 @@ export function relativePagePaths(wikiEntries: PageLinkData[], currentPath: stri
const pagePathExtensionless = join(pagePathParsed.dir, pagePathParsed.name); const pagePathExtensionless = join(pagePathParsed.dir, pagePathParsed.name);
if (pagePathExtensionless === currentPathExtensionless) { if (pagePathExtensionless === currentPathExtensionless) {
currentPage = entry currentPage = entry;
continue; continue;
} }
@ -51,9 +57,14 @@ export function relativePagePaths(wikiEntries: PageLinkData[], currentPath: stri
continue; continue;
} }
const isIndirectChild = pagePathParsed.dir.startsWith(currentPathExtensionless + sep); const isIndirectChild = pagePathParsed.dir.startsWith(
currentPathExtensionless + sep,
);
if (isIndirectChild) { if (isIndirectChild) {
const nextPathSeparator = pagePathParsed.dir.indexOf(sep, currentPathExtensionless.length + 1); const nextPathSeparator = pagePathParsed.dir.indexOf(
sep,
currentPathExtensionless.length + 1,
);
if (nextPathSeparator === -1) { if (nextPathSeparator === -1) {
childDirectoryPaths.add(pagePathParsed.dir); childDirectoryPaths.add(pagePathParsed.dir);
@ -64,9 +75,14 @@ export function relativePagePaths(wikiEntries: PageLinkData[], currentPath: stri
continue; continue;
} }
const isIndirectInCurrentDirectory = currentPathParsed.dir === "" || pagePathParsed.dir.startsWith(currentPathParsed.dir + sep); const isIndirectInCurrentDirectory =
currentPathParsed.dir === "" ||
pagePathParsed.dir.startsWith(currentPathParsed.dir + sep);
if (isIndirectInCurrentDirectory) { if (isIndirectInCurrentDirectory) {
const nextPathSeparator = pagePathParsed.dir.indexOf(sep, currentPathParsed.dir.length + 1); const nextPathSeparator = pagePathParsed.dir.indexOf(
sep,
currentPathParsed.dir.length + 1,
);
if (nextPathSeparator === -1) { if (nextPathSeparator === -1) {
siblingDirectoryPaths.add(pagePathParsed.dir); siblingDirectoryPaths.add(pagePathParsed.dir);
@ -95,7 +111,7 @@ export function relativePagePaths(wikiEntries: PageLinkData[], currentPath: stri
const childDirectoryPathParsed = parse(childDirectoryPath); const childDirectoryPathParsed = parse(childDirectoryPath);
childDirectories.push({ childDirectories.push({
id: childDirectoryPath, id: childDirectoryPath,
data: { title: childDirectoryPathParsed.name } data: { title: childDirectoryPathParsed.name },
}); });
} }
@ -111,14 +127,14 @@ export function relativePagePaths(wikiEntries: PageLinkData[], currentPath: stri
const siblingDirectoryPathParsed = parse(siblingDirectoryPath); const siblingDirectoryPathParsed = parse(siblingDirectoryPath);
siblingDirectories.push({ siblingDirectories.push({
id: siblingDirectoryPath, id: siblingDirectoryPath,
data: { title: siblingDirectoryPathParsed.name } data: { title: siblingDirectoryPathParsed.name },
}); });
} }
if (currentPage === undefined) { if (currentPage === undefined) {
currentPage = { currentPage = {
id: currentPath, id: currentPath,
data: { title: currentPathParsed.name } data: { title: currentPathParsed.name },
}; };
} }
@ -127,7 +143,7 @@ export function relativePagePaths(wikiEntries: PageLinkData[], currentPath: stri
const parentDirectoryPathParsed = parse(currentPathParsed.dir); const parentDirectoryPathParsed = parse(currentPathParsed.dir);
parentDirectory = { parentDirectory = {
id: currentPathParsed.dir, id: currentPathParsed.dir,
data: { title: parentDirectoryPathParsed.name } data: { title: parentDirectoryPathParsed.name },
}; };
} else { } else {
parentDirectory = null; parentDirectory = null;
@ -143,11 +159,14 @@ export function relativePagePaths(wikiEntries: PageLinkData[], currentPath: stri
currentPage, currentPage,
parentDirectory, parentDirectory,
} };
} }
export function allPageAndDirectoryPaths(wikiEntries: CollectionEntry<"wiki">[]): AllPathInformation { export function allPageAndDirectoryPaths(
const pathInformation: Map<string, CollectionEntry<"wiki"> | null> = new Map(); wikiEntries: CollectionEntry<"wiki">[],
): AllPathInformation {
const pathInformation: Map<string, CollectionEntry<"wiki"> | null> =
new Map();
for (const entry of wikiEntries) { for (const entry of wikiEntries) {
pathInformation.set(entry.id, entry); pathInformation.set(entry.id, entry);

28
treefmt.nix Normal file
View file

@ -0,0 +1,28 @@
# treefmt.nix
{ pkgs, ... }:
{
# Used to find the project root
projectRootFile = "flake.nix";
# go
programs.gofmt.enable = true;
# js/ts
programs.prettier.enable = true;
# markdown
programs.mdformat.enable = true;
# nix
programs.nixfmt-rfc-style.enable = true;
programs.statix.enable = true;
# python
programs.black.enable = true;
# rust
programs.rustfmt.enable = true;
# swift
programs.swift-format.enable = true;
}