Checklist
Before submitting a PR for a new ecosystem:
- Error types with conversions to
deps_core::DepsError - Every public type prefixed with
<Ecosystem>(NpmDependency, notDependency) — see Step 3 - Types implementing
DependencyandVersiontraits (withsource()method) - A new variant added to
deps_core::EcosystemId(crates/deps-core/src/ecosystem.rs’secosystem_ids!invocation) —Ecosystem::ecosystem_id()returns this variant, and every existing exhaustivematchonEcosystemIdacross the workspace must be updated to handle it - Parser with accurate position tracking for names AND versions
- Lock file parser implementing
LockFileProvidertrait (locate_lockfile+parse_lockfile) - Formatter implementing
PackageRendering(format_version_for_text_edit+package_url) plus the other sixEcosystemFormatterconcern traits — neverimpl EcosystemFormatterdirectly, it is a blanket impl - Registry client implementing
deps_core::Registrytrait with BoxFuture signatures - Ecosystem impl with
impl deps_core::ecosystem::private::Sealedblock (the workspace’s documented-contract sealing convention, not a compiler-enforced restriction) -
completion_insert_textimplemented (required, no default — issue #722); overridefallback_completion_prefixtoo if this manifest format has a raw-text dependencies-section boundary to detect, reusingdeps_core::fallback_completion’s shared TOML/JSON/XML-tag scanners where the syntax shape matches an existing one - Unit tests for parser edge cases
- Integration tests for registry (can be
#[ignore]) - Documentation in lib.rs with examples
- No workspace-members edit needed (root
Cargo.toml’smembersis thecrates/*glob — see Step 1); do add anlsp-responsesfeature forwarding todeps-core/lsp-responses, gating this crate’s owntower-lsp-serverdependency -
[lints] workspace = truein the new crate’s Cargo.toml (otherwise it silently gets none of theindexing_slicing/unwrap_used/expect_used/string_slicerestriction lints consolidated into[workspace.lints.clippy]by #689, and CI stays green) - Feature flag added in
crates/deps-engine/Cargo.toml, forwarded fromcrates/deps-lsp/Cargo.tomland (if the CLI should support it too)crates/deps-cli/Cargo.toml - Re-exports via
ecosystem!()macro incrates/deps-engine/src/setup.rs - Registration via
register!()macro insideregister_ecosystems()incrates/deps-engine/src/setup.rs— see Step 10