switch to gomponents
1 file changed, 55 insertions(+), 64 deletions(-)
changed files
M routes/routes.go → routes/routes.go
@@ -3,7 +3,6 @@ import ( "compress/gzip" "fmt" - "html/template" "log" "net/http" "os"@@ -19,6 +18,7 @@ "github.com/microcosm-cc/bluemonday" "github.com/russross/blackfriday/v2" "go.alanpearce.eu/elgit/config" "go.alanpearce.eu/elgit/git" + "go.alanpearce.eu/elgit/templates" ) type deps struct {@@ -79,14 +79,23 @@ sort.Slice(infos, func(i, j int) bool { return infos[j].d.Before(infos[i].d) }) - tpath := filepath.Join(d.c.Dirs.Templates, "*") - t := template.Must(template.ParseGlob(tpath)) + // Convert to the format expected by the templates package + repoInfos := make([]templates.RepoInfo, len(infos)) + for i, info := range infos { + repoInfos[i] = templates.RepoInfo{ + DisplayName: info.DisplayName, + Name: info.Name, + Desc: info.Desc, + Idle: info.Idle, + LastCommit: info.d, + } + } - data := make(map[string]interface{}) - data["meta"] = d.c.Meta - data["info"] = infos + pageData := templates.PageData{ + Meta: d.c.Meta, + } - if err := t.ExecuteTemplate(w, "index", data); err != nil { + if err := templates.Index(pageData, repoInfos).Render(w); err != nil { log.Println(err) return }@@ -119,7 +128,7 @@ log.Println(err) return } - var readmeContent template.HTML + var readmeContent string for _, readme := range d.c.Repo.Readme { ext := filepath.Ext(readme) content, _ := gr.FileContent(readme)@@ -131,12 +140,10 @@ []byte(content), blackfriday.WithExtensions(blackfriday.CommonExtensions), ) html := bluemonday.UGCPolicy().SanitizeBytes(unsafe) - readmeContent = template.HTML(html) + readmeContent = string(html) default: safe := bluemonday.UGCPolicy().SanitizeBytes([]byte(content)) - readmeContent = template.HTML( - fmt.Sprintf(`<pre>%s</pre>`, safe), - ) + readmeContent = fmt.Sprintf(`<pre>%s</pre>`, safe) } break }@@ -153,25 +160,21 @@ log.Println(err) return } - tpath := filepath.Join(d.c.Dirs.Templates, "*") - t := template.Must(template.ParseGlob(tpath)) - if len(commits) >= 3 { commits = commits[:3] } - data := make(map[string]any) - data["name"] = name - data["displayname"] = getDisplayName(name) - data["ref"] = mainBranch - data["readme"] = readmeContent - data["commits"] = commits - data["desc"] = getDescription(path) - data["servername"] = d.c.Server.Name - data["meta"] = d.c.Meta - data["gomod"] = isGoModule(gr) + pageData := templates.PageData{ + Meta: d.c.Meta, + Name: name, + DisplayName: getDisplayName(name), + Ref: mainBranch, + Description: getDescription(path), + Servername: d.c.Server.Name, + Gomod: isGoModule(gr), + } - if err := t.ExecuteTemplate(w, "repo", data); err != nil { + if err := templates.Repo(pageData, commits, readmeContent).Render(w); err != nil { log.Println(err) } }@@ -352,19 +355,16 @@ log.Println(err) return } - tpath := filepath.Join(d.c.Dirs.Templates, "*") - t := template.Must(template.ParseGlob(tpath)) - - data := make(map[string]interface{}) - data["commits"] = commits - data["meta"] = d.c.Meta - data["name"] = name - data["displayname"] = getDisplayName(name) - data["ref"] = ref - data["desc"] = getDescription(path) - data["log"] = true + pageData := templates.PageData{ + Meta: d.c.Meta, + Name: name, + DisplayName: getDisplayName(name), + Ref: ref, + Description: getDescription(path), + Log: true, + } - if err := t.ExecuteTemplate(w, "log", data); err != nil { + if err := templates.Log(pageData, commits).Render(w); err != nil { log.Println(err) return }@@ -397,21 +397,17 @@ log.Println(err) return } - tpath := filepath.Join(d.c.Dirs.Templates, "*") - t := template.Must(template.ParseGlob(tpath)) - - data := make(map[string]interface{}) + pageData := templates.PageData{ + Meta: d.c.Meta, + Name: name, + Stat: diff.Stat, + Diff: diff.Diff, + DisplayName: getDisplayName(name), + Ref: ref, + Description: getDescription(path), + } - data["commit"] = diff.Commit - data["stat"] = diff.Stat - data["diff"] = diff.Diff - data["meta"] = d.c.Meta - data["name"] = name - data["displayname"] = getDisplayName(name) - data["ref"] = ref - data["desc"] = getDescription(path) - - if err := t.ExecuteTemplate(w, "commit", data); err != nil { + if err := templates.Commit(pageData, diff).Render(w); err != nil { log.Println(err) return }@@ -450,19 +446,14 @@ d.Write500(w) return } - tpath := filepath.Join(d.c.Dirs.Templates, "*") - t := template.Must(template.ParseGlob(tpath)) + pageData := templates.PageData{ + Meta: d.c.Meta, + Name: name, + DisplayName: getDisplayName(name), + Description: getDescription(path), + } - data := make(map[string]interface{}) - - data["meta"] = d.c.Meta - data["name"] = name - data["displayname"] = getDisplayName(name) - data["branches"] = branches - data["tags"] = tags - data["desc"] = getDescription(path) - - if err := t.ExecuteTemplate(w, "refs", data); err != nil { + if err := templates.Refs(pageData, branches, tags).Render(w); err != nil { log.Println(err) return }