MCPcopy Index your code
hub / github.com/dagger/dagger / moduleSourceWithToolchains

Method moduleSourceWithToolchains

core/schema/modulesource.go:1953–2018  ·  view source on GitHub ↗
(
	ctx context.Context,
	parentSrc *core.ModuleSource,
	args struct {
		Toolchains []core.ModuleSourceID
	},
)

Source from the content-addressed store, hash-verified

1951}
1952
1953func (s *moduleSourceSchema) moduleSourceWithToolchains(
1954 ctx context.Context,
1955 parentSrc *core.ModuleSource,
1956 args struct {
1957 Toolchains []core.ModuleSourceID
1958 },
1959) (*core.ModuleSource, error) {
1960 parentSrc = parentSrc.Clone()
1961
1962 dag, err := core.CurrentDagqlServer(ctx)
1963 if err != nil {
1964 return nil, fmt.Errorf("failed to get dag server: %w", err)
1965 }
1966
1967 newToolchains, err := collectIDObjectResults(ctx, dag, args.Toolchains)
1968 if err != nil {
1969 return nil, fmt.Errorf("failed to load module source toolchains from ids: %w", err)
1970 }
1971
1972 accessor := moduleRelationTypeAccessor{typ: core.ModuleRelationTypeToolchain}
1973
1974 allToolchains, err := s.validateAndCollectRelatedModules(parentSrc, newToolchains, accessor)
1975 if err != nil {
1976 return nil, err
1977 }
1978
1979 finalToolchains, err := s.deduplicateAndSortItems(allToolchains, accessor)
1980 if err != nil {
1981 return nil, err
1982 }
1983
1984 accessor.setItems(parentSrc, finalToolchains)
1985
1986 configToolchains := make([]*modules.ModuleConfigDependency, len(finalToolchains))
1987 for i, toolchain := range finalToolchains {
1988 toolchainID, err := toolchain.ID()
1989 if err != nil {
1990 return nil, fmt.Errorf("failed to get toolchain ID: %w", err)
1991 }
1992 // Load as a dependency to get the proper config format
1993 tmpArgs := struct{ Dependencies []core.ModuleSourceID }{
1994 Dependencies: []core.ModuleSourceID{dagql.NewID[*core.ModuleSource](toolchainID)},
1995 }
1996 tmpSrc := parentSrc.Clone()
1997 tmpSrc.Dependencies = nil
1998 tmpSrc, err = s.moduleSourceWithDependencies(ctx, tmpSrc, tmpArgs)
1999 if err != nil {
2000 return nil, fmt.Errorf("failed to load toolchain config: %w", err)
2001 }
2002 tmpConfig, err := s.loadModuleSourceConfig(tmpSrc)
2003 if err != nil {
2004 return nil, fmt.Errorf("failed to load toolchain config: %w", err)
2005 }
2006 if len(tmpConfig.Dependencies) > 0 {
2007 configToolchains[i] = tmpConfig.Dependencies[0]
2008 for _, origToolchain := range parentSrc.ConfigToolchains {
2009 if origToolchain.Name == configToolchains[i].Name {
2010 configToolchains[i].Customizations = origToolchain.Customizations

Callers

nothing calls this directly

Calls 9

setItemsMethod · 0.95
CurrentDagqlServerFunction · 0.92
collectIDObjectResultsFunction · 0.85
CloneMethod · 0.65
IDMethod · 0.65

Tested by

no test coverage detected