MCPcopy
hub / github.com/syncthing/syncthing / getModules

Function getModules

script/copyrights.go:274–322  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

272}
273
274func getModules() []string {
275 ignoreRe := regexp.MustCompile(`golang\.org/x/|github\.com/syncthing|^[^.]+(/|$)`)
276
277 // List all modules (used for mapping packages to modules)
278 data, err := exec.Command("go", "list", "-m", "all").Output()
279 if err != nil {
280 log.Fatalf("go list -m all: %v", err)
281 }
282 modules := strings.Split(string(data), "\n")
283 for i := range modules {
284 modules[i], _, _ = strings.Cut(modules[i], " ")
285 }
286 modules = slices.DeleteFunc(modules, func(s string) bool { return s == "" })
287
288 // List all packages in use by the syncthing binary, map them to modules
289 data, err = exec.Command("go", "list", "-deps", "./cmd/syncthing").Output()
290 if err != nil {
291 log.Fatalf("go list -deps ./cmd/syncthing: %v", err)
292 }
293 packages := strings.Split(string(data), "\n")
294 packages = slices.DeleteFunc(packages, func(s string) bool { return s == "" })
295
296 seen := make(map[string]struct{})
297 for _, pkg := range packages {
298 if ignoreRe.MatchString(pkg) {
299 continue
300 }
301
302 // Find module for package
303 modIdx := slices.IndexFunc(modules, func(mod string) bool {
304 return strings.HasPrefix(pkg, mod)
305 })
306 if modIdx < 0 {
307 log.Println("no module for", pkg)
308 continue
309 }
310 module := modules[modIdx]
311 seen[module] = struct{}{}
312 }
313
314 adds := make([]string, 0)
315 for k := range seen {
316 adds = append(adds, k)
317 }
318
319 slices.Sort(adds)
320
321 return adds
322}
323
324func parseCopyrightNotices(input string) []CopyrightNotice {
325 doc, err := html.Parse(strings.NewReader("<ul>" + input + "</ul>"))

Callers 1

mainFunction · 0.85

Calls 1

SortMethod · 0.80

Tested by

no test coverage detected