(
ctx context.Context,
parentSrc *core.ModuleSource,
args struct {
Toolchains []core.ModuleSourceID
},
)
| 1951 | } |
| 1952 | |
| 1953 | func (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 |
nothing calls this directly
no test coverage detected