Skip to content

feat(repopo): Add Cargo workspace policies for Rust monorepos #616

@tylerbutler

Description

@tylerbutler

Summary

Add policies for Cargo workspace management in Rust monorepos.

Proposed Policies

WorkspaceMembersValid

Validate workspace configuration:

makePolicy(WorkspaceMembersValid, {
  validatePaths: true,         // All members paths must exist
  detectOrphans: true,         // Find crates not in workspace
  requireExplicitMembers: true, // Prefer explicit over glob patterns
})

SharedDependencyVersions

Enforce consistent dependency versions across workspace:

makePolicy(SharedDependencyVersions, {
  // Require workspace-level dependencies
  requireWorkspaceDeps: ["serde", "tokio", "anyhow"],
  
  // Detect version mismatches
  detectMismatches: true,
  
  // Suggest workspace.dependencies for duplicates
  suggestWorkspaceDeps: true,
})

WorkspaceInheritance

Ensure members inherit from workspace:

makePolicy(WorkspaceInheritance, {
  // Fields that should use workspace inheritance
  inherit: ["version", "authors", "license", "repository"],
  
  // Allow overrides for specific crates
  allowOverrides: ["examples/*"],
})

Use Case

Large Rust monorepos with multiple crates benefit from consistent workspace configuration and dependency management.

Related

This complements the existing monorepo support in repopo for Node.js workspaces.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions