MCPcopy Create free account
hub / github.com/bufbuild/buf / Build

Method Build

private/bufpkg/bufmodule/module_set_builder.go:407–440  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

405}
406
407func (b *moduleSetBuilder) Build() (ModuleSet, error) {
408 defer xslog.DebugProfile(b.logger)()
409
410 if !b.buildCalled.CompareAndSwap(false, true) {
411 return nil, errBuildAlreadyCalled
412 }
413 if len(b.errs) > 0 {
414 return nil, errors.Join(b.errs...)
415 }
416 if len(b.addedModules) == 0 {
417 // Allow an empty ModuleSet.
418 return newModuleSet(nil)
419 }
420 // If not empty, we need at least one target Module.
421 if xslices.Count(b.addedModules, func(m *addedModule) bool { return m.IsTarget() }) < 1 {
422 return nil, syserror.New("no Modules were targeted in ModuleSetBuilder")
423 }
424
425 // Get the unique modules, preferring targets over non-targets, and local over remote.
426 addedModules, err := getUniqueSortedAddedModulesByOpaqueID(b.ctx, b.commitProvider, b.addedModules)
427 if err != nil {
428 return nil, err
429 }
430 modules, err := xslices.MapError(
431 addedModules,
432 func(addedModule *addedModule) (Module, error) {
433 return addedModule.ToModule(b.ctx, b.moduleDataProvider, b.commitProvider)
434 },
435 )
436 if err != nil {
437 return nil, err
438 }
439 return newModuleSet(modules)
440}
441
442func (b *moduleSetBuilder) addError(err error) *moduleSetBuilder {
443 b.errs = append(b.errs, err)

Callers

nothing calls this directly

Calls 5

NewFunction · 0.92
ToModuleMethod · 0.80
newModuleSetFunction · 0.70
IsTargetMethod · 0.65

Tested by

no test coverage detected