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

Method collectBuildTools

pkgcache/metadata.go:207–281  ·  view source on GitHub ↗
(visitedPorts, seenTools map[string]struct{})

Source from the content-addressed store, hash-verified

205}
206
207func (p Port) collectBuildTools(visitedPorts, seenTools map[string]struct{}) ([]string, error) {
208 key := fmt.Sprintf("%s|%t", p.NameVersion, p.DevDep || p.HostDev)
209 if _, ok := visitedPorts[key]; ok {
210 return nil, nil
211 }
212 visitedPorts[key] = struct{}{}
213
214 var tools []string
215 appendTool := func(tool string) {
216 if _, ok := seenTools[tool]; !ok {
217 seenTools[tool] = struct{}{}
218 tools = append(tools, tool)
219 }
220 }
221
222 for _, tool := range p.BuildConfig.BuildTools {
223 appendTool(tool)
224 }
225
226 for _, nameVersion := range p.BuildConfig.DevDependencies {
227 // Ignore self.
228 if (p.DevDep || p.HostDev) && p.NameVersion == nameVersion {
229 continue
230 }
231 if !p.Callbacks.CheckHostSupported(nameVersion) {
232 continue
233 }
234
235 buildConfig, err := p.Callbacks.GetBuildConfig(nameVersion, true)
236 if err != nil {
237 return nil, fmt.Errorf("get build config of dev dependency %s -> %w", nameVersion, err)
238 }
239
240 parent := expr.If(len(p.Parents) == 0, p.NameVersion, fmt.Sprintf("dev_dependency: %s", p.NameVersion))
241 childTools, err := Port{
242 Platform: p.Platform,
243 Project: p.Project,
244 PortType: portTypeDevDependency,
245 NameVersion: nameVersion,
246 DevDep: true,
247 Parents: append(p.Parents, parent),
248 BuildConfig: *buildConfig,
249 Callbacks: p.Callbacks,
250 }.collectBuildTools(visitedPorts, seenTools)
251 if err != nil {
252 return nil, err
253 }
254 tools = append(tools, childTools...)
255 }
256
257 for _, nameVersion := range p.BuildConfig.Dependencies {
258 buildConfig, err := p.Callbacks.GetBuildConfig(nameVersion, false)
259 if err != nil {
260 return nil, fmt.Errorf("get build config of dependency %s -> %w", nameVersion, err)
261 }
262
263 parent := expr.If(len(p.Parents) == 0, p.NameVersion, fmt.Sprintf("dependency: %s", p.NameVersion))
264 childTools, err := Port{

Callers 1

BuildMetaMethod · 0.95

Calls 4

IfFunction · 0.92
SprintfMethod · 0.80
CheckHostSupportedMethod · 0.65
GetBuildConfigMethod · 0.65

Tested by

no test coverage detected