diff options
author | Runxi Yu <me@runxiyu.org> | 2025-02-10 16:14:01 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-02-10 16:14:01 +0800 |
commit | e8c9cd78b13d19bac6865b9fdb89fe1e4d55ee19 (patch) | |
tree | 35eafb6f1efa17ea162b9d0d684b9ccbc38ca7bf /git_misc.go | |
parent | repo_tree: Use x--- to indicate modes that aren't convertable (diff) | |
download | forge-e8c9cd78b13d19bac6865b9fdb89fe1e4d55ee19.tar.gz forge-e8c9cd78b13d19bac6865b9fdb89fe1e4d55ee19.tar.zst forge-e8c9cd78b13d19bac6865b9fdb89fe1e4d55ee19.zip |
git_misc: Abstract tree-listing into build_display_git_tree
Diffstat (limited to 'git_misc.go')
-rw-r--r-- | git_misc.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/git_misc.go b/git_misc.go new file mode 100644 index 0000000..c463cc4 --- /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 +} |