Skip to content

refactor(migration): plugin-style architecture for providers#129

Merged
CalvinAllen merged 1 commit intomainfrom
refactor/migration/plugin-architecture
Dec 13, 2025
Merged

refactor(migration): plugin-style architecture for providers#129
CalvinAllen merged 1 commit intomainfrom
refactor/migration/plugin-architecture

Conversation

@CalvinAllen
Copy link
Contributor

Summary

Closes #128

  • Creates a plugin-style architecture for migration providers following the same pattern as runtime providers
  • Adds internal/migration package with Provider interface and global registry
  • Implements 10 migration providers organized by runtime:
    • Node.js: nvm (supports nvm-windows), fnm, system
    • Python: pyenv, system
    • Ruby: rbenv, rvm, chruby, system
  • Updates migrate.go to use the new provider system
  • Removes deprecated find*Versions() functions from runtime providers
  • Includes test harness and comprehensive tests for all providers

Test plan

  • All existing tests pass (npm run check)
  • New migration provider tests pass
  • Linter passes without errors

Implements GitHub issue #128. Creates a plugin-style architecture
for migration providers similar to runtime providers:

- Add internal/migration package with Provider interface and registry
- Create per-runtime migration providers under src/migrations/
  - node: nvm, fnm, system
  - python: pyenv, system
  - ruby: rbenv, rvm, chruby, system
- Update migrate.go to use migration providers
- Remove deprecated find*Versions() from runtime providers
- Add test harness and tests for all providers

Each provider implements Name(), DisplayName(), Runtime(),
IsPresent(), DetectVersions(), CanAutoUninstall(),
UninstallCommand(), and ManualInstructions().
@CalvinAllen CalvinAllen merged commit 2033a80 into main Dec 13, 2025
12 checks passed
@CalvinAllen CalvinAllen deleted the refactor/migration/plugin-architecture branch December 13, 2025 23:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

refactor(migration): plugin-style architecture for version manager migration providers

1 participant