MCPcopy
hub / github.com/cyclops-ui/cyclops / listModules

Function listModules

cyctl/internal/get/modules.go:25–86  ·  view source on GitHub ↗

listModules retrieves and displays a list of modules from the Cyclops API.

(clientset *client.CyclopsV1Alpha1Client, moduleNames []string)

Source from the content-addressed store, hash-verified

23
24// listModules retrieves and displays a list of modules from the Cyclops API.
25func listModules(clientset *client.CyclopsV1Alpha1Client, moduleNames []string) {
26 modules, err := clientset.Modules("cyclops").List(metav1.ListOptions{})
27 if err != nil {
28 fmt.Printf("Error listing modules: %v\n", err)
29 return
30 }
31
32 if len(modules) == 0 {
33 fmt.Println("No modules found.")
34 return
35 }
36
37 longestName := 20 // minimum column width
38 for _, module := range modules {
39 if len(module.Name) > longestName {
40 longestName = len(module.Name)
41 }
42 }
43
44 filteredModules := modules
45 notFoundModules := make([]string, 0)
46
47 if len(moduleNames) > 0 {
48 nameSet := make(map[string]struct{}, len(moduleNames))
49 for _, name := range moduleNames {
50 nameSet[name] = struct{}{}
51 }
52 foundModules := make([]v1alpha1.Module, 0)
53
54 for _, module := range modules {
55 if _, found := nameSet[module.Name]; found {
56 foundModules = append(foundModules, module)
57 delete(nameSet, module.Name)
58 }
59 }
60 for name := range nameSet {
61 notFoundModules = append(notFoundModules, name)
62 }
63 if len(notFoundModules) > 0 {
64 for _, name := range notFoundModules {
65 fmt.Printf("no module found with name: %s\n", name)
66 }
67 }
68 filteredModules = foundModules
69 }
70
71 headerSpacing := max(0, longestName-4)
72 output := ""
73 if len(filteredModules) > 0 {
74 output += "NAME" + strings.Repeat(" ", headerSpacing) + " AGE\n"
75 }
76
77 fmt.Print(output)
78 for _, module := range filteredModules {
79 age := time.Since(module.CreationTimestamp.Time).Round(time.Second)
80 nameSpacing := max(0, longestName-len(module.Name))
81 fmt.Printf("%s"+strings.Repeat(" ", nameSpacing)+" %s\n", module.Name, age.String())
82 }

Callers 1

modules.goFile · 0.85

Calls 4

ModulesMethod · 0.80
PrintfMethod · 0.80
PrintlnMethod · 0.80
ListMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…