Skip to content

Refactor: group file-format crates under a single top-level folder #268

@robinskil

Description

@robinskil

@

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

  1. Move the crate directories into the new parent folder.
  2. Update members (and exclude) paths in the root Cargo.toml.
  3. 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.)
  4. Verify cargo build / cargo test across the workspace.
  5. Update any Dockerfile COPY paths and CI references that hardcode crate paths.

Acceptance criteria

  • All file-format crates live under one parent folder.
  • Top-level directory has noticeably fewer entries.
  • cargo build and cargo test pass for the whole workspace.
  • Docker build still succeeds (path-sensitive COPY steps updated).
    @

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions