@
Motivation
The workspace root currently holds ~20 beacon-* crate folders side by side. A large share of them are file-format adapters, which makes the top-level tree noisy and hard to scan. Grouping all file-format-related crates under a single parent folder would flatten the top-level directory and make the format layer easier to navigate as a cohesive unit.
Proposal
Move the file-format-related crates into a single parent folder (e.g. crates/formats/ or file-formats/) so the repository root has fewer entries and the format crates live together one level deeper.
Crates to move
Core format adapters / aggregator:
beacon-arrow-atlas
beacon-arrow-netcdf
beacon-arrow-odv
beacon-arrow-tiff
beacon-arrow-zarr
beacon-binary-format
beacon-binary-format-toolbox (currently excluded from the workspace)
beacon-formats (the aggregator that re-exports the above)
Supporting crates used by the format adapters (consider moving alongside, TBD during implementation):
beacon-nd-array
beacon-nd-arrow
Work required
- Move the crate directories into the new parent folder.
- Update
members (and exclude) paths in the root Cargo.toml.
- Fix the relative
path = "../beacon-*" dependencies that point at the moved crates. Known consumers include:
beacon-core
beacon-functions
beacon-data-lake
beacon-formats (references all beacon-arrow-* + beacon-binary-format)
beacon-binary-format-toolbox
- the moved crates referencing each other (
beacon-nd-array, etc.)
- Verify
cargo build / cargo test across the workspace.
- Update any Dockerfile
COPY paths and CI references that hardcode crate paths.
Acceptance criteria
@
Motivation
The workspace root currently holds ~20
beacon-*crate folders side by side. A large share of them are file-format adapters, which makes the top-level tree noisy and hard to scan. Grouping all file-format-related crates under a single parent folder would flatten the top-level directory and make the format layer easier to navigate as a cohesive unit.Proposal
Move the file-format-related crates into a single parent folder (e.g.
crates/formats/orfile-formats/) so the repository root has fewer entries and the format crates live together one level deeper.Crates to move
Core format adapters / aggregator:
beacon-arrow-atlasbeacon-arrow-netcdfbeacon-arrow-odvbeacon-arrow-tiffbeacon-arrow-zarrbeacon-binary-formatbeacon-binary-format-toolbox(currentlyexcluded from the workspace)beacon-formats(the aggregator that re-exports the above)Supporting crates used by the format adapters (consider moving alongside, TBD during implementation):
beacon-nd-arraybeacon-nd-arrowWork required
members(andexclude) paths in the rootCargo.toml.path = "../beacon-*"dependencies that point at the moved crates. Known consumers include:beacon-corebeacon-functionsbeacon-data-lakebeacon-formats(references allbeacon-arrow-*+beacon-binary-format)beacon-binary-format-toolboxbeacon-nd-array, etc.)cargo build/cargo testacross the workspace.COPYpaths and CI references that hardcode crate paths.Acceptance criteria
cargo buildandcargo testpass for the whole workspace.COPYsteps updated).@