fork of https://github.com/sourcegraph/zoekt
0

Configure Feed

Select the types of activity you want to include in your feed.

Add support for filtering out private repositories (#991)

+22 -13
+4
cmd/zoekt-indexserver/config.go
··· 58 58 GerritRepoNameFormat string 59 59 ExcludeUserRepos bool 60 60 Forks bool 61 + Visibility []string 61 62 } 62 63 63 64 func randomize(entries []ConfigEntry) []ConfigEntry { ··· 206 207 } 207 208 if c.Forks { 208 209 cmd.Args = append(cmd.Args, "-forks") 210 + } 211 + for _, v := range c.Visibility { 212 + cmd.Args = append(cmd.Args, "-visibility", v) 209 213 } 210 214 } else if c.GitilesURL != "" { 211 215 cmd = exec.Command("zoekt-mirror-gitiles",
+11 -4
cmd/zoekt-mirror-github/main.go
··· 30 30 "strconv" 31 31 "strings" 32 32 33 - "github.com/google/go-github/v27/github" 33 + "github.com/google/go-github/v78/github" 34 34 "golang.org/x/oauth2" 35 35 36 36 "github.com/sourcegraph/zoekt/gitindex" ··· 51 51 topics []string 52 52 excludeTopics []string 53 53 noArchived *bool 54 + visibility []string 54 55 } 55 56 56 57 func main() { ··· 68 69 excludeTopics := topicsFlag{} 69 70 flag.Var(&excludeTopics, "exclude_topic", "don't clone repos whose have one of given topics. You can add multiple topics by setting this more than once.") 70 71 noArchived := flag.Bool("no_archived", false, "mirror only projects that are not archived") 72 + visibility := topicsFlag{} 73 + flag.Var(&visibility, "visibility", "filter repos by visibility (public, private, internal). You can add multiple values by setting this more than once.") 71 74 72 75 flag.Parse() 73 76 ··· 109 112 topics: topics, 110 113 excludeTopics: excludeTopics, 111 114 noArchived: noArchived, 115 + visibility: visibility, 112 116 } 113 117 var repos []*github.Repository 114 118 var err error ··· 228 232 return false 229 233 } 230 234 231 - func filterRepositories(repos []*github.Repository, include []string, exclude []string, noArchived bool) (filteredRepos []*github.Repository) { 235 + func filterRepositories(repos []*github.Repository, include []string, exclude []string, noArchived bool, visibility []string) (filteredRepos []*github.Repository) { 232 236 for _, repo := range repos { 233 237 if noArchived && *repo.Archived { 234 238 continue 235 239 } 240 + if len(visibility) > 0 && !hasIntersection(visibility, []string{repo.GetVisibility()}) { 241 + continue 242 + } 236 243 if (len(include) == 0 || hasIntersection(include, repo.Topics)) && 237 244 !hasIntersection(exclude, repo.Topics) { 238 245 filteredRepos = append(filteredRepos, repo) ··· 254 261 } 255 262 256 263 opt.Page = resp.NextPage 257 - repos = filterRepositories(repos, reposFilters.topics, reposFilters.excludeTopics, *reposFilters.noArchived) 264 + repos = filterRepositories(repos, reposFilters.topics, reposFilters.excludeTopics, *reposFilters.noArchived, reposFilters.visibility) 258 265 allRepos = append(allRepos, repos...) 259 266 if resp.NextPage == 0 { 260 267 break ··· 276 283 } 277 284 278 285 opt.Page = resp.NextPage 279 - repos = filterRepositories(repos, reposFilters.topics, reposFilters.excludeTopics, *reposFilters.noArchived) 286 + repos = filterRepositories(repos, reposFilters.topics, reposFilters.excludeTopics, *reposFilters.noArchived, reposFilters.visibility) 280 287 allRepos = append(allRepos, repos...) 281 288 if resp.NextPage == 0 { 282 289 break
+3 -3
go.mod
··· 13 13 github.com/go-enry/go-enry/v2 v2.9.1 14 14 github.com/go-git/go-git/v5 v5.13.1 15 15 github.com/gobwas/glob v0.2.3 16 - github.com/google/go-cmp v0.6.0 17 - github.com/google/go-github/v27 v27.0.6 16 + github.com/google/go-cmp v0.7.0 17 + github.com/google/go-github/v78 v78.0.0 18 18 github.com/google/slothfs v0.0.0-20190717100203-59c1163fd173 19 19 github.com/grafana/regexp v0.0.0-20240607082908-2cb410fa05da 20 20 github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 ··· 145 145 gopkg.in/yaml.v3 v3.0.1 // indirect 146 146 ) 147 147 148 - go 1.23.4 148 + go 1.24.0
+4 -6
go.sum
··· 160 160 github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= 161 161 github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 162 162 github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 163 - github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= 164 - github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 165 - github.com/google/go-github/v27 v27.0.6 h1:oiOZuBmGHvrGM1X9uNUAUlLgp5r1UUO/M/KnbHnLRlQ= 166 - github.com/google/go-github/v27 v27.0.6/go.mod h1:/0Gr8pJ55COkmv+S/yPKCczSkUPIM/LnFyubufRNIS0= 167 - github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= 163 + github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= 164 + github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= 165 + github.com/google/go-github/v78 v78.0.0 h1:b1tytzFE8i//lRVDx5Qh/EdJbtTPtSVD3nF7hraEs9w= 166 + github.com/google/go-github/v78 v78.0.0/go.mod h1:Uxvdzy82AkNlC6JQ57se9TqvmgBT7RF0ouHDNg2jd6g= 168 167 github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= 169 168 github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= 170 169 github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= ··· 447 446 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 448 447 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 449 448 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 450 - golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 451 449 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 452 450 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 453 451 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=