Thanks to visit codestin.com
Credit goes to github.com

Skip to content

feat(deps): add support for Deno#10291

Merged
jdx merged 4 commits into
jdx:mainfrom
felipecrs:deps-deno
Jun 11, 2026
Merged

feat(deps): add support for Deno#10291
jdx merged 4 commits into
jdx:mainfrom
felipecrs:deps-deno

Conversation

@felipecrs

@felipecrs felipecrs commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

This adds support for Deno in mise deps.

Summary by CodeRabbit

  • New Features

    • First-class Deno support: automatic detection of Deno projects and full dependency management (list, dry-run, install, add/remove). Commands run from the project root and respect configured environment/run options.
  • Tests

    • End-to-end coverage for the Deno dependency workflow with improved test isolation to avoid cross-provider interference.

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 75c82499-2c0a-4bba-8b94-9de0c460b776

📥 Commits

Reviewing files that changed from the base of the PR and between a23d1c6 and 575a31d.

📒 Files selected for processing (1)
  • docs/dev-tools/deps.md
✅ Files skipped from review due to trivial changes (1)
  • docs/dev-tools/deps.md

📝 Walkthrough

Walkthrough

Adds Deno as a built-in dependency provider: implements DenoDepsProvider with install/add/remove commands and applicability checks, registers and wires it into provider discovery and engine construction, updates builtin provider list, and adds an end-to-end test validating the provider behavior.

Changes

Deno Dependency Provider Integration

Layer / File(s) Summary
Deno provider implementation
src/deps/providers/deno.rs
DenoDepsProvider wraps ProviderBase and implements DepsProvider. Declares watched sources (deno.lock, deno.json, deno.jsonc, package.json), no required outputs, optional node_modules, install_command() uses config.run or defaults to deno install, is_applicable() checks for deno.lock, and add_command()/remove_command() build deno add/deno remove invocations with env and working directory wiring.
Provider module registration
src/deps/providers/mod.rs, src/deps/rule.rs
Adds mod deno;, re-exports DenoDepsProvider, and extends BUILTIN_PROVIDERS to include "deno".
Engine provider construction
src/deps/engine.rs
Imports DenoDepsProvider and extends DepsEngine::build_provider with a "deno" arm constructing the provider from the config root and provider config.
Applicability detection
src/deps/mod.rs
detect_applicable_providers checks array includes the deno constructor so Deno projects are detected.
End-to-end test coverage
e2e/cli/test_deps
Adds a Deno provider e2e test that prepares deno.lock, writes [deps.deno] in mise.toml, asserts mise deps --list and mise deps --dry-run, and updates subsequent provider cleanup to remove deno.lock.
Documentation
docs/dev-tools/deps.md
Documents deno provider in the configuration example, built-in providers table, and supported ecosystems list.

Sequence Diagram

sequenceDiagram
  participant DepsEngine
  participant build_provider
  participant detect_applicable_providers
  participant DenoDepsProvider
  DepsEngine->>build_provider: Provider ID = "deno"
  build_provider->>DenoDepsProvider: new(config_root, provider_config)
  DenoDepsProvider-->>build_provider: DenoDepsProvider instance
  DepsEngine->>detect_applicable_providers: Scan for applicable providers
  detect_applicable_providers->>DenoDepsProvider: is_applicable() (checks deno.lock)
  DenoDepsProvider-->>detect_applicable_providers: deno.lock exists → true
  detect_applicable_providers-->>DepsEngine: [DenoDepsProvider, ...]
Loading

🎯 3 (Moderate) | ⏱️ ~20 minutes

🐰 I hopped to add Deno's song,
Locked the deps and wired it strong,
Commands assembled, tests did cheer,
A tidy hop — the provider's here! 🥕✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(deps): add support for Deno' clearly and concisely summarizes the main change: adding Deno as a new deps provider across the codebase.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps

greptile-apps Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds first-class Deno support to mise deps, implementing a new DenoDepsProvider that detects Deno projects by deno.lock presence and delegates to deno install / deno add / deno remove for dependency management.

  • New src/deps/providers/deno.rs mirrors the bun provider pattern, with node_modules/ correctly placed in optional_outputs() (rather than required outputs()) since Deno only materialises it for npm-compatible projects.
  • The provider is wired into engine.rs, mod.rs (auto-detection), rule.rs, and documented in deps.md; an e2e test covers list, dry-run, and cleanup isolation before the go provider tests.

Confidence Score: 5/5

Safe to merge — the change is additive and well isolated, with no modifications to existing provider logic.

The implementation cleanly follows the established provider pattern, the e2e test exercises the full list/dry-run flow with proper cleanup, and there are no changes to existing providers or shared engine logic.

src/deps/rule.rs — ordering of "deno" in BUILTIN_PROVIDERS does not match its position in detect_applicable_providers or the docs table.

Important Files Changed

Filename Overview
src/deps/providers/deno.rs New Deno provider following the same pattern as bun.rs; correctly marks node_modules as optional output, uses deno add/remove for package management, and gates applicability on deno.lock presence.
src/deps/rule.rs Adds "deno" to BUILTIN_PROVIDERS after "aube", which is inconsistent with the order in detect_applicable_providers (mod.rs) and the docs table where deno appears between bun and aube.
e2e/cli/test_deps Adds deno e2e test with proper isolation (creates deno.lock, overrides mise.toml, then cleans up before go tests).
src/deps/engine.rs Adds DenoDepsProvider to the match arm after "aube", consistent with rule.rs ordering.
src/deps/mod.rs Adds deno to detect_applicable_providers between bun and aube, matching the docs table order.
docs/dev-tools/deps.md Adds deno row to the providers table and mentions deno in the add/remove ecosystems list.
src/deps/providers/mod.rs Wires up the new deno module and re-exports DenoDepsProvider.

Reviews (3): Last reviewed commit: "Add deno do deps.md docs" | Re-trigger Greptile

Comment thread src/deps/providers/deno.rs
Comment thread src/deps/providers/deno.rs

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/deps/providers/deno.rs`:
- Around line 71-85: The description in add_command currently always shows "deno
install {packages}" but omits the "--dev" flag when dev is true; update the code
building the DepsCommand (in function add_command) to include "--dev" in the
description when dev is set by checking the dev boolean and prepending/inserting
"--dev" into the description string (mirror how args is constructed) so the
DepsCommand.description accurately reflects the actual program and args
(program: "deno", args, description).
- Around line 48-98: The Deno provider currently builds incorrect CLI
subcommands: change add_command to use the "add" subcommand (not "install") and
include the dev flag as Deno expects (e.g., push "--dev" or "-D" when dev is
true) and update the description to "deno add ..."; leave install_command as the
variant that runs "deno install" with no package args (used for installing from
config) and keep remove_command using "uninstall" (which matches Deno's
uninstall/remove alias) but ensure its description stays "deno uninstall ...".
Locate and edit the functions add_command, install_command, and remove_command
in the Deno provider to make these adjustments.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: b6c7dcb9-28de-49d0-9dc7-25dcf0d51ad9

📥 Commits

Reviewing files that changed from the base of the PR and between 38fce40 and d29c2a5.

📒 Files selected for processing (6)
  • e2e/cli/test_deps
  • src/deps/engine.rs
  • src/deps/mod.rs
  • src/deps/providers/deno.rs
  • src/deps/providers/mod.rs
  • src/deps/rule.rs

Comment thread src/deps/providers/deno.rs
Comment thread src/deps/providers/deno.rs
@jdx jdx merged commit 3f2b853 into jdx:main Jun 11, 2026
34 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants