MCPcopy Create free account
hub / github.com/celer-pkg/celer / showProjectTree

Method showProjectTree

cmds/cmd_tree.go:132–189  ·  view source on GitHub ↗

showProjectTree displays dependency tree for a project.

(target string, depchecker any)

Source from the content-addressed store, hash-verified

130
131// showProjectTree displays dependency tree for a project.
132func (t *treeCmd) showProjectTree(target string, depchecker any) error {
133 var project configs.Project
134 if err := project.Init(t.celer, target); err != nil {
135 return fmt.Errorf("failed to initialize project %s -> %w", target, err)
136 }
137
138 rootInfo := portInfo{
139 nameVersion: target,
140 depth: 0,
141 devDep: false,
142 }
143 nextDepth := rootInfo.depth + 1
144
145 // Define checker interface.
146 type depChecker interface {
147 CheckCircular(context.Context, configs.Port) error
148 CheckConflict(context.Context, ...configs.Port) error
149 }
150 checker := depchecker.(depChecker)
151
152 // Check circular dependence and version conflicts.
153 var ports []configs.Port
154 for _, nameVersion := range project.Ports {
155 var port configs.Port
156 if err := port.Init(t.celer, nameVersion); err != nil {
157 return fmt.Errorf("failed to initialize port %s -> %w", nameVersion, err)
158 }
159
160 if err := checker.CheckCircular(t.celer, port); err != nil {
161 return fmt.Errorf("circular dependency detected in %s -> %w", nameVersion, err)
162 }
163
164 ports = append(ports, port)
165 }
166 if err := checker.CheckConflict(t.celer, ports...); err != nil {
167 return fmt.Errorf("version conflicts detected -> %w", err)
168 }
169
170 // Collect port info.
171 for _, port := range project.Ports {
172 portInfo := portInfo{
173 nameVersion: port,
174 depth: nextDepth,
175 devDep: false,
176 }
177 if err := t.collectPortInfos(&portInfo, port); err != nil {
178 return fmt.Errorf("failed to collect port information for %s -> %w", port, err)
179 }
180
181 rootInfo.depedencies = append(rootInfo.depedencies, &portInfo)
182 }
183
184 title := "display dependencies in tree view"
185 separator := strings.Repeat("-", len(title))
186 color.Printf(color.Title, "%s\n%s\n", title, separator)
187 t.printTree(&rootInfo)
188 return nil
189}

Callers 1

treeMethod · 0.95

Calls 7

InitMethod · 0.95
InitMethod · 0.95
collectPortInfosMethod · 0.95
printTreeMethod · 0.95
PrintfFunction · 0.92
CheckCircularMethod · 0.65
CheckConflictMethod · 0.65

Tested by

no test coverage detected