I have an issue while working on replacing dagger develop by dagger generate.
Let's take a subset of our dagger/dagger as an example:
dagger/dagger/ ← root workspace
├── .dagger/
│ └── config.toml ← references toolchains/*, modules, etc.
├── toolchains/
│ ├── rust-sdk-dev/
│ │ ├── dagger.json ← depends on "../engine-dev"
│ │ └── .dagger/
│ │ └── config.toml ← develop module for dagger generate
│ └── engine-dev/
│ └── dagger.json
└── ...
When we run dagger generate on toolchains/rust-sdk-dev, it needs to load its dependencies to know what to generate. Its dagger.json declares a dependency on ../engine-dev.
But dagger generate runs with toolchains/rust-sdk-dev/ as the workspace root.
toolchains/rust-sdk-dev/ ← workspace root for dagger generate
├── dagger.json ← source: "../engine-dev"
└── .dagger/
└── config.toml
../engine-dev/ ← :warning: OUTSIDE the workspace boundary
└── dagger.json
The ../engine-dev path escapes the module's workspace. The engine won't resolve it because it's outside the workspace boundary.
On the ideas to solve it:
- explicit escape hatch in
.dagger/config.toml: Like theincludeindagger.jsonso it allows to access files outside of the workspace - a way to access the root workspace? Or maybe to run
dagger generatefor a module but in the context of a parent workspace so it finds everything it needs? - something else?