diff options
author | Runxi Yu <me@runxiyu.org> | 2025-02-10 13:01:17 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-02-10 13:01:17 +0800 |
commit | 33594e8b0a24f483353bdd3cfab3ee141ea3a60e (patch) | |
tree | 6aec3ae1dbf16eb9ddf10efeb97b206382046273 | |
parent | repo_tree_{dir,file}: Fix body class (diff) | |
download | forge-33594e8b0a24f483353bdd3cfab3ee141ea3a60e.tar.gz forge-33594e8b0a24f483353bdd3cfab3ee141ea3a60e.tar.zst forge-33594e8b0a24f483353bdd3cfab3ee141ea3a60e.zip |
index: List categories
-rw-r--r-- | handle_index.go | 20 | ||||
-rw-r--r-- | templates/index.html | 20 |
2 files changed, 40 insertions, 0 deletions
diff --git a/handle_index.go b/handle_index.go index b9a8a0c..5d54e6a 100644 --- a/handle_index.go +++ b/handle_index.go @@ -2,7 +2,27 @@ package main import ( "net/http" + "os" ) func handle_index(w http.ResponseWriter, r *http.Request) { + data := make(map[string]any) + + entries, err := os.ReadDir(config.Git.Root) + if err != nil { + w.Write([]byte("Error listing categories: " + err.Error())) + return + } + + categories := []string{} + for _, entry := range entries { + categories = append(categories, entry.Name()) + } + data["categories"] = categories + + err = templates.ExecuteTemplate(w, "index", data) + if err != nil { + w.Write([]byte("Error rendering template: " + err.Error())) + return + } } diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..219ae09 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,20 @@ +{{- define "index" -}} +<!DOCTYPE html> +<html> +<head> +<link rel="stylesheet" href="/static/style.css" /> +<title>Forge</title> +</head> +<body class="index"> +<div class="padding-wrapper"> +<ul> +{{- range .categories }} +<li> +<a href="{{ . }}/">{{ . }}</a> +</li> +{{- end }} +</ul> +</div> +</body> +</html> +{{- end -}} |