code.gitea.io/gitea@v1.21.7/routers/web/repo/treelist.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package repo 5 6 import ( 7 "net/http" 8 9 "code.gitea.io/gitea/modules/base" 10 "code.gitea.io/gitea/modules/context" 11 "code.gitea.io/gitea/modules/git" 12 13 "github.com/go-enry/go-enry/v2" 14 ) 15 16 // TreeList get all files' entries of a repository 17 func TreeList(ctx *context.Context) { 18 tree, err := ctx.Repo.Commit.SubTree("/") 19 if err != nil { 20 ctx.ServerError("Repo.Commit.SubTree", err) 21 return 22 } 23 24 entries, err := tree.ListEntriesRecursiveFast() 25 if err != nil { 26 ctx.ServerError("ListEntriesRecursiveFast", err) 27 return 28 } 29 entries.CustomSort(base.NaturalSortLess) 30 31 files := make([]string, 0, len(entries)) 32 for _, entry := range entries { 33 if !isExcludedEntry(entry) { 34 files = append(files, entry.Name()) 35 } 36 } 37 ctx.JSON(http.StatusOK, files) 38 } 39 40 func isExcludedEntry(entry *git.TreeEntry) bool { 41 if entry.IsDir() { 42 return true 43 } 44 45 if entry.IsSubModule() { 46 return true 47 } 48 49 if enry.IsVendor(entry.Name()) { 50 return true 51 } 52 53 return false 54 }