From e8c9cd78b13d19bac6865b9fdb89fe1e4d55ee19 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Mon, 10 Feb 2025 16:14:01 +0800 Subject: [PATCH] git_misc: Abstract tree-listing into build_display_git_tree --- git_misc.go | 24 ++++++++++++++++++++++++ handle_repo_index.go | 21 ++------------------- handle_repo_tree.go | 20 +------------------- diff --git a/git_misc.go b/git_misc.go new file mode 100644 index 0000000000000000000000000000000000000000..c463cc432104cd3605fdd60c16d7d46a83102db7 --- /dev/null +++ b/git_misc.go @@ -0,0 +1,24 @@ +package main + +import "github.com/go-git/go-git/v5/plumbing/object" + +func build_display_git_tree(tree *object.Tree) []display_git_tree_entry_t { + 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 = "x---" + } else { + display_git_tree_entry.Mode = os_mode.String()[:4] + } + 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) + } + return display_git_tree +} diff --git a/handle_repo_index.go b/handle_repo_index.go index 8fe6b8df4eb2369d8f98b2dc975f0b2003b4244d..8418d702d357a5d08024db8c29278bb6940bef2c 100644 --- a/handle_repo_index.go +++ b/handle_repo_index.go @@ -51,26 +51,9 @@ if err != nil { _, _ = w.Write([]byte("Error getting file tree: " + err.Error())) return } - data["readme"] = render_readme_at_tree(tree) - 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 = "x---" - } else { - display_git_tree_entry.Mode = os_mode.String()[:4] - } - 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 + data["readme"] = render_readme_at_tree(tree) + data["files"] = build_display_git_tree(tree) err = templates.ExecuteTemplate(w, "repo_index", data) if err != nil { diff --git a/handle_repo_tree.go b/handle_repo_tree.go index 152c97993c0c744d25f19bcba41e1116130b0696..0af1de51d197ef767e9472740e6aa4daf1e7e51c 100644 --- a/handle_repo_tree.go +++ b/handle_repo_tree.go @@ -82,25 +82,7 @@ return } data["readme"] = render_readme_at_tree(tree) - - display_git_tree := make([]display_git_tree_entry_t, 0) - for _, entry := range target.Entries { - display_git_tree_entry := display_git_tree_entry_t{} - os_mode, err := entry.Mode.ToOSFileMode() - if err != nil { - display_git_tree_entry.Mode = "x---" - } else { - display_git_tree_entry.Mode = os_mode.String()[:4] - } - display_git_tree_entry.Is_file = entry.Mode.IsFile() - display_git_tree_entry.Size, err = target.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 + data["files"] = build_display_git_tree(tree) err = templates.ExecuteTemplate(w, "repo_tree_dir", data) if err != nil { -- 2.48.1