Started building out the site.

This commit is contained in:
Leon Mika 2025-01-18 16:02:35 +11:00
parent f119683b57
commit b62458d7cd
14 changed files with 368 additions and 31 deletions

25
cmd/gendocs/frame.tmpl Normal file
View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://cdn.simplecss.org/simple.min.css">
<link rel="stylesheet" href="/style.css">
</head>
<body>
<header>
<h1>UCL</h1>
<nav>
<a href="/">Home</a>
<a href="/core/">Core</a>
<a href="/playground/">Playground</a>
</nav>
</header>
<main>
{{.Body}}
</main>
<footer>
<p>By Leon Mika. Terminal control using <a href="https://xtermjs.org">xterm.js</a></p>
</footer>
</body>
</html>

61
cmd/gendocs/main.go Normal file
View file

@ -0,0 +1,61 @@
package main
import (
"bytes"
"embed"
"flag"
"github.com/yuin/goldmark"
"github.com/yuin/goldmark/parser"
"go.abhg.dev/goldmark/frontmatter"
"html/template"
"log"
"os"
)
//go:embed frame.tmpl
var frameTmpl embed.FS
func main() {
flag.Parse()
if flag.NArg() != 1 {
log.Fatalln("usage: gendocs [markdown]")
}
md := goldmark.New(goldmark.WithExtensions(&frontmatter.Extender{}))
mdData, err := os.ReadFile(flag.Arg(0))
if err != nil {
log.Fatal(err)
}
ctx := parser.NewContext()
var buf bytes.Buffer
if err := md.Convert(mdData, &buf, parser.WithContext(ctx)); err != nil {
log.Fatal(err)
}
var frontMatter struct {
Title string `yaml:"title"`
}
if fm := frontmatter.Get(ctx); fm != nil {
if err := fm.Decode(&frontMatter); err != nil {
log.Fatal(err)
}
}
frameTmpls, err := template.ParseFS(frameTmpl, "*.tmpl")
if err != nil {
log.Fatal(err)
}
var res bytes.Buffer
if err := frameTmpls.ExecuteTemplate(&res, "frame.tmpl", map[string]interface{}{
"Title": frontMatter.Title,
"Body": template.HTML(buf.Bytes()),
}); err != nil {
log.Fatal(err)
}
os.Stdout.Write(res.Bytes())
}