serveAllResolvedModuleLoads serves all resolved primary modules and their related modules (blueprints, toolchains-of-toolchains). Transitive dependencies are only served for the entrypoint module — the one the user is interacting with via `dagger call` or `dagger shell`. This is needed so the clien
(client *daggerClient, loads []moduleLoadRequest, resolved []resolvedModuleLoad)
| 892 | // each module's deps are available in its own internal schema (mod.Deps) for |
| 893 | // type resolution during function calls. |
| 894 | func (srv *Server) serveAllResolvedModuleLoads(client *daggerClient, loads []moduleLoadRequest, resolved []resolvedModuleLoad) error { |
| 895 | for i := range loads { |
| 896 | load := resolved[i] |
| 897 | for _, related := range load.related { |
| 898 | if err := srv.serveModule(client, core.NewUserMod(related.mod), core.InstallOpts{Entrypoint: related.entrypoint}); err != nil { |
| 899 | return fmt.Errorf("error serving related module %s: %w", related.mod.Self().Name(), err) |
| 900 | } |
| 901 | } |
| 902 | if err := srv.serveModule(client, core.NewUserMod(load.primary), core.InstallOpts{Entrypoint: load.primaryEntrypoint}); err != nil { |
| 903 | return moduleLoadErr(loads[i], err) |
| 904 | } |
| 905 | // For the entrypoint module (the one the user targets via dagger call), |
| 906 | // also serve its direct dependencies so the client schema can resolve |
| 907 | // concrete types behind interfaces. This mirrors the includeDependencies |
| 908 | // behavior from `main`. Toolchain/non-entrypoint deps stay internal. |
| 909 | if load.primaryEntrypoint { |
| 910 | for _, dep := range load.primary.Self().Deps.Mods() { |
| 911 | if err := srv.serveModule(client, dep, core.InstallOpts{SkipConstructor: true}); err != nil { |
| 912 | return fmt.Errorf("error serving entrypoint dependency %s: %w", dep.Name(), err) |
| 913 | } |
| 914 | } |
| 915 | } |
| 916 | } |
| 917 | |
| 918 | return nil |
| 919 | } |
| 920 | |
| 921 | func gatherModuleLoadRequests(pending []pendingModule, extras []engine.ExtraModule) []moduleLoadRequest { |
| 922 | loads := make([]moduleLoadRequest, 0, len(pending)+len(extras)) |
no test coverage detected