diff options
| author | mo khan <mo@mokhan.ca> | 2026-02-01 00:14:55 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2026-02-01 00:14:55 -0700 |
| commit | 22172c0c7b8be48ae269c06e7555781374d2d0a2 (patch) | |
| tree | 5729113612082f7b840c897723a78eeeb9ba0b4a | |
| parent | b7c1e89f12e06c478c13b255da3df366736edf02 (diff) | |
| -rw-r--r-- | internal/generator/compare.go | 13 | ||||
| -rw-r--r-- | internal/generator/tags.go | 9 | ||||
| -rw-r--r-- | internal/templates/tags.gohtml | 3 | ||||
| -rw-r--r-- | internal/templates/templates.go | 3 |
4 files changed, 25 insertions, 3 deletions
diff --git a/internal/generator/compare.go b/internal/generator/compare.go index ec47e08..c2c3a15 100644 --- a/internal/generator/compare.go +++ b/internal/generator/compare.go @@ -24,6 +24,13 @@ func GenerateComparePages(tags []git.Tag, branches []git.Ref, params Params) err return err } + if len(tags) > 0 { + latestTag := tags[0].Name + if err := generateComparePage(latestTag, "HEAD", params); err != nil { + Echo(fmt.Sprintf(" warning: compare %s...HEAD failed: %v", latestTag, err)) + } + } + if len(tags) > 1 { for i := 0; i < len(tags)-1; i++ { base := tags[i+1].Name @@ -152,7 +159,11 @@ func generateComparePage(base, head string, params Params) error { commits[i].Href = filepath.ToSlash(filepath.Join("../../commit", commits[i].Hash+".html")) } - dirName := baseRef.DirName() + "..." + headRef.DirName() + headDirName := headRef.DirName() + if head == "HEAD" { + headDirName = "HEAD" + } + dirName := baseRef.DirName() + "..." + headDirName outDir := filepath.Join(params.OutputDir, "compare", dirName) if err := os.MkdirAll(outDir, 0o755); err != nil { return err diff --git a/internal/generator/tags.go b/internal/generator/tags.go index 8286df3..f91b4cb 100644 --- a/internal/generator/tags.go +++ b/internal/generator/tags.go @@ -33,6 +33,12 @@ func GenerateTags(entries []git.Tag, params Params) error { } } + var unreleasedHref string + if len(entries) > 0 { + latestTag := git.NewRef(entries[0].Name) + unreleasedHref = fmt.Sprintf("compare/%s...HEAD/", latestTag.DirName()) + } + return templates.TagsTemplate.ExecuteTemplate(f, "layout.gohtml", templates.TagsParams{ LayoutParams: templates.LayoutParams{ Title: fmt.Sprintf("Tags %s %s", Dot, params.Name), @@ -41,6 +47,7 @@ func GenerateTags(entries []git.Tag, params Params) error { CurrentRefDir: params.DefaultRef.DirName(), Selected: "tags", }, - Tags: tagEntries, + Tags: tagEntries, + UnreleasedHref: unreleasedHref, }) } diff --git a/internal/templates/tags.gohtml b/internal/templates/tags.gohtml index b2ee680..99794a7 100644 --- a/internal/templates/tags.gohtml +++ b/internal/templates/tags.gohtml @@ -54,6 +54,9 @@ {{- define "body" -}} <h1>Tags</h1> +{{- if .UnreleasedHref}} +<p><a href="{{.UnreleasedHref}}">Unreleased changes</a></p> +{{- end}} <div class="tags"> {{- if .Tags}} {{- range .Tags}} diff --git a/internal/templates/templates.go b/internal/templates/templates.go index 734a150..ae60a56 100644 --- a/internal/templates/templates.go +++ b/internal/templates/templates.go @@ -140,7 +140,8 @@ type BranchEntry struct { type TagsParams struct { LayoutParams - Tags []TagEntry + Tags []TagEntry + UnreleasedHref string } type TagEntry struct { |
