shroomgit

generate static pages of git repos
git clone https://git.davidvoz.net/shroomgit.git
index
logs
tree
license

commit 75c7134b0f4a8a461a48c0172d9e046138d2f6df
Author: David Voznyarskiy <davidv@no-reply@disroot.org>
Date:   Wed Mar 25 00:18:13 2026 -0700

    WIP save point for creating a brief summary index page
    
    Signed-off-by: David Voznyarskiy <davidv@no-reply@disroot.org>

diff --git a/shgit/shgit.go b/shgit/shgit.go
index 8dd6fa4..1c7be04 100644
--- a/shgit/shgit.go
+++ b/shgit/shgit.go
@@ -1,11 +1,37 @@ package main
-import "fmt"
+import (
+ "fmt"
+ "os"
+ "path/filepath"
+)
func main() {
- summaryPage()
+ // TODO error handling here for invalid arguments
+
+ repo := os.Args[1]
+ output := "."
+ if len(os.Args) == 3 {
+ output = os.Args[2]
+ }
+
+ fmt.Println(repo)
+ fmt.Println(output)
+ fmt.Println(len(os.Args))
+
+ gitPath := filepath.Join(repo, ".git")
+ _, err := os.Stat(gitPath)
+ if err != nil {
+ fmt.Println("ERROR no .git found")
+ os.Exit(1)
+ }
+
+ outputFile := filepath.Join(output, "index.html")
+ file, _ := os.Create(outputFile)
+
+ file.WriteString(indexPage())
}
-func summaryPage() {
- fmt.Println(topPart)
+func indexPage() string {
+ return topPart
} diff --git a/shgit/top_part.go b/shgit/top_part.go index f8d4a0f..20d90f2 100644
--- a/shgit/top_part.go
+++ b/shgit/top_part.go
@@ -10,13 +10,14 @@ import ( // the common HTML lines that all files will share var topPart = func() string { var b strings.Builder
+ config := config.Shgit
b.WriteString("<!DOCTYPE html>\n") b.WriteString("<html>\n") b.WriteString("<head>\n") b.WriteString("<link rel=\"stylesheet\" href=\"style.css\" \\>\n") b.WriteString("<link rel=\"icon\" type=\"image/png\" href=\"")
- b.WriteString(config.Shgit.Favicon)
+ b.WriteString(config.Favicon)
b.WriteString("\" \\>\n") b.WriteString("</head>\n") @@ -28,14 +29,14 @@ var topPart = func() string { b.WriteString("<td>") b.WriteString("<a href=\"")
- b.WriteString(config.Shgit.LogoHref)
+ b.WriteString(config.LogoHref)
b.WriteString("\">") b.WriteString("<img src=\"")
- b.WriteString(config.Shgit.Logo)
+ b.WriteString(config.Logo)
b.WriteString("\" width=")
- b.WriteString(strconv.Itoa(config.Shgit.LogoWidth))
+ b.WriteString(strconv.Itoa(config.LogoWidth))
b.WriteString(" height=")
- b.WriteString(strconv.Itoa(config.Shgit.LogoHeight))
+ b.WriteString(strconv.Itoa(config.LogoHeight))
b.WriteString("/>") b.WriteString("</a>") b.WriteString("</td>") @@ -60,38 +61,26 @@ var topPart = func() string { b.WriteString("</tr>") b.WriteString("</table>")
- b.WriteString("\n<div style=\"display:flex; flex-wrap:wrap; gap:25px;margin-top:3px;\">\n")
+ b.WriteString("\n<div style=\"display:flex; flex-wrap:wrap; gap:30px;margin-top:3px;\">\n")
b.WriteString("\n<div style=\"display:flex;padding-left:20px;\">\n") b.WriteString("<a>")
- b.WriteString("summary\n")
+ b.WriteString("index\n")
b.WriteString("</a>") b.WriteString("</div>\n")
- b.WriteString("\n<div style=\"display:flex;\">\n")
- b.WriteString("│\n")
- b.WriteString("</div>\n")
-
b.WriteString("\n<div style=\"display:flex;\">\n") b.WriteString("<a>") b.WriteString("logs\n") b.WriteString("</a>") b.WriteString("</div>\n")
- b.WriteString("\n<div style=\"display:flex;\">\n")
- b.WriteString("│\n")
- b.WriteString("</div>\n")
-
b.WriteString("\n<div style=\"display:flex;\">\n") b.WriteString("<a>") b.WriteString("tree\n") b.WriteString("</a>") b.WriteString("</div>\n")
- b.WriteString("\n<div style=\"display:flex;\">\n")
- b.WriteString("│\n")
- b.WriteString("</div>\n")
-
// TODO if license exists { if 1+1 == 2 { b.WriteString("\n<div style=\"display:flex;\">\n")