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.
Consumers of
manifestscurrently useIdentifyandParseone file at a time, then implement their own rules for deciding which files belong to a project.briefcurrently maintains this logic indetect.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:
.github/workflows/*.{yml,yaml}.Cargo.toml.go.work.package.json.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
Parseusable as a pure single-file operation. Vendored package and vendor-root discovery is covered separately by #54 and can use the same repository reader.