MCPcopy Create free account
hub / github.com/dagger/dagger / install

Method install

core/module.go:2206–2262  ·  view source on GitHub ↗
(ctx context.Context, dag *dagql.Server, opts ...InstallOpts)

Source from the content-addressed store, hash-verified

2204}
2205
2206func (mod *userMod) install(ctx context.Context, dag *dagql.Server, opts ...InstallOpts) error {
2207 self := mod.self()
2208 if self == nil {
2209 return fmt.Errorf("install user module: missing module result wrapper")
2210 }
2211
2212 slog.ExtraDebug("installing module", "name", self.Name())
2213 start := time.Now()
2214 defer func() { slog.ExtraDebug("done installing module", "name", self.Name(), "took", time.Since(start)) }()
2215
2216 for _, def := range self.ObjectDefs {
2217 objDef := def.Self().AsObject.Value.Self()
2218
2219 slog.ExtraDebug("installing object", "name", self.Name(), "object", objDef.Name)
2220
2221 modType, ok, err := self.Deps.ModTypeFor(ctx, def.Self())
2222 if err != nil {
2223 return fmt.Errorf("failed to get mod type for type def: %w", err)
2224 }
2225 if ok {
2226 if src := self.GetSource(); src != nil && src.SelfCallsEnabled() {
2227 slog.ExtraDebug("type is already defined by dependency module", "type", objDef.Name, "module", modType.SourceMod().Name())
2228 } else {
2229 return fmt.Errorf("type %q is already defined by module %q", objDef.Name, modType.SourceMod().Name())
2230 }
2231 }
2232
2233 obj := &ModuleObject{
2234 Module: mod.res,
2235 TypeDef: objDef,
2236 }
2237 if err := obj.Install(ctx, dag, opts...); err != nil {
2238 return err
2239 }
2240 }
2241
2242 for _, def := range self.InterfaceDefs {
2243 ifaceDef := def.Self().AsInterface.Value.Self()
2244 slog.ExtraDebug("installing interface", "name", self.Name(), "interface", ifaceDef.Name)
2245 iface := &InterfaceType{
2246 typeDef: ifaceDef,
2247 mod: mod.res,
2248 }
2249 if err := iface.Install(ctx, dag); err != nil {
2250 return err
2251 }
2252 }
2253
2254 for _, def := range self.EnumDefs {
2255 enumDef := def.Self().AsEnum.Value.Self()
2256 slog.ExtraDebug("installing enum", "name", self.Name(), "enum", enumDef.Name, "members", len(enumDef.Members))
2257 enum := &ModuleEnum{TypeDef: enumDef}
2258 enum.Install(dag)
2259 }
2260
2261 return nil
2262}
2263

Callers 1

InstallMethod · 0.95

Calls 12

selfMethod · 0.95
NameMethod · 0.95
GetSourceMethod · 0.95
InstallMethod · 0.95
InstallMethod · 0.95
InstallMethod · 0.95
ExtraDebugFunction · 0.92
SelfMethod · 0.80
SelfCallsEnabledMethod · 0.80
ModTypeForMethod · 0.65
NameMethod · 0.65
SourceModMethod · 0.65

Tested by

no test coverage detected