Skip to content

Add project and workspace manifest discovery #55

Description

@andrew

Consumers of manifests currently use Identify and Parse one file at a time, then implement their own rules for deciding which files belong to a project.

brief currently maintains this logic in detect.Engine.manifestPaths. It starts with known root manifests, includes GitHub Actions workflows, and expands workspace membership for Cargo, Go, npm or Yarn, and pnpm. Other consumers need similar behavior and can produce different results when they walk every recognized filename instead.

Add repository-level project and workspace manifest discovery to manifests. It should accept a rooted file reader with path or glob lookup so it can work with an OS checkout or a Git commit tree.

Initial support should include:

  • Registered manifest and lockfile names at the project root.
  • Known path-based manifests such as .github/workflows/*.{yml,yaml}.
  • Cargo workspace members and exclusions from Cargo.toml.
  • Go workspace modules from go.work.
  • npm and Yarn workspace patterns from package.json.
  • pnpm workspace patterns and exclusions from pnpm-workspace.yaml.

Return normalized manifest paths with their ecosystem and kind. Workspace results should retain the workspace root or parent manifest that led to their discovery so consumers can explain why a nested manifest was included.

Keep Parse usable as a pure single-file operation. Vendored package and vendor-root discovery is covered separately by #54 and can use the same repository reader.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions