diff options
author | Runxi Yu <me@runxiyu.org> | 2025-02-10 08:00:44 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-02-10 08:00:44 +0800 |
commit | 6cb469d0f09abed57004165a79a16156eb09cd2d (patch) | |
tree | 884eb9a1bdf47959a397697f818917682138a0c5 | |
parent | repo_index.html: Remove unnecessary whitespace in output (diff) | |
download | forge-6cb469d0f09abed57004165a79a16156eb09cd2d.tar.gz forge-6cb469d0f09abed57004165a79a16156eb09cd2d.tar.zst forge-6cb469d0f09abed57004165a79a16156eb09cd2d.zip |
repo_index: Add file list
-rw-r--r-- | handle_repo_index.go | 19 | ||||
-rw-r--r-- | templates/repo_index.html | 19 | ||||
-rw-r--r-- | types.go | 9 |
3 files changed, 47 insertions, 0 deletions
diff --git a/handle_repo_index.go b/handle_repo_index.go index ab11500..7674423 100644 --- a/handle_repo_index.go +++ b/handle_repo_index.go @@ -68,6 +68,25 @@ func handle_repo_index(w http.ResponseWriter, r *http.Request) { readme_rendered_safe := template.HTML(bluemonday.UGCPolicy().SanitizeBytes(readme_rendered_unsafe.Bytes())) data["readme"] = readme_rendered_safe + display_git_tree := make([]display_git_tree_entry_t, 0) + for _, entry := range tree.Entries { + display_git_tree_entry := display_git_tree_entry_t{} + os_mode, err := entry.Mode.ToOSFileMode() + if err != nil { + display_git_tree_entry.Mode = "----------" + } else { + display_git_tree_entry.Mode = os_mode.String() + } + display_git_tree_entry.Is_file = entry.Mode.IsFile() + display_git_tree_entry.Size, err = tree.Size(entry.Name) + if err != nil { + display_git_tree_entry.Size = 0 + } + display_git_tree_entry.Name = entry.Name + display_git_tree = append(display_git_tree, display_git_tree_entry) + } + data["files"] = display_git_tree + err = templates.ExecuteTemplate(w, "repo_index", data) if err != nil { w.Write([]byte("Error rendering template: " + err.Error())) diff --git a/templates/repo_index.html b/templates/repo_index.html index 4241356..13bac72 100644 --- a/templates/repo_index.html +++ b/templates/repo_index.html @@ -30,6 +30,25 @@ {{- end }} </tbody> </table> +<table id="file-tree"> +<thead> +<tr> +<!--th scope="col">Blob/Tree ID</th--> +<th scope="col">Mode</th> +<th scope="col">Name</th> +<th scope="col">Size</th> +</tr> +</thead> +<tbody> +{{- range .files }} +<tr> +<td class="file-mode">{{ .Mode }}</td> +<td class="file-name">{{ .Name }}</td> +<td class="file-size">{{ .Size }}</td> +</tr> +{{- end }} +</tbody> +</table> <div id="refs"> </div> <div id="readme"> diff --git a/types.go b/types.go new file mode 100644 index 0000000..d8bf42c --- /dev/null +++ b/types.go @@ -0,0 +1,9 @@ +package main + +type display_git_tree_entry_t struct { + Name string + Mode string + Size int64 + Is_file bool + Is_subtree bool +} |