| 189 | } |
| 190 | |
| 191 | func (t *treeCmd) collectPortInfos(parent *portInfo, nameVersion string) error { |
| 192 | var port configs.Port |
| 193 | if err := port.Init(t.celer, nameVersion); err != nil { |
| 194 | return err |
| 195 | } |
| 196 | |
| 197 | matchedConfig := port.MatchedConfig |
| 198 | nextDepth := parent.depth + 1 |
| 199 | |
| 200 | // Collect dependency ports. |
| 201 | for _, depNameVersion := range matchedConfig.Dependencies { |
| 202 | var depPort configs.Port |
| 203 | if err := depPort.Init(t.celer, depNameVersion); err != nil { |
| 204 | return err |
| 205 | } |
| 206 | |
| 207 | portInfo := portInfo{ |
| 208 | parent: parent, |
| 209 | nameVersion: depNameVersion, |
| 210 | depth: nextDepth, |
| 211 | devDep: parent.devDep, |
| 212 | } |
| 213 | parent.depedencies = append(parent.depedencies, &portInfo) |
| 214 | t.collectPortInfos(&portInfo, depNameVersion) |
| 215 | } |
| 216 | |
| 217 | // Collect dev_dependency ports. |
| 218 | for _, devDepNameVersion := range matchedConfig.DevDependencies { |
| 219 | // Ignore itself. |
| 220 | if parent.devDep && devDepNameVersion == nameVersion { |
| 221 | continue |
| 222 | } |
| 223 | |
| 224 | var devDepPort configs.Port |
| 225 | if err := devDepPort.Init(t.celer, devDepNameVersion); err != nil { |
| 226 | return err |
| 227 | } |
| 228 | |
| 229 | portInfo := portInfo{ |
| 230 | parent: parent, |
| 231 | nameVersion: devDepNameVersion, |
| 232 | depth: nextDepth, |
| 233 | devDep: true, |
| 234 | } |
| 235 | parent.devDependencies = append(parent.devDependencies, &portInfo) |
| 236 | t.collectPortInfos(&portInfo, devDepNameVersion) |
| 237 | } |
| 238 | |
| 239 | return nil |
| 240 | } |
| 241 | |
| 242 | func (t *treeCmd) printTree(info *portInfo) { |
| 243 | t.printTreeWithPrefix(info, "", true) |