You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#19 gives numan nupm status/inspect a structured, machine-readable eligibility report, but a nupm user still has to run multiple commands by hand (status, inspect, import, activate) to actually move over. That's friction most early adopters won't push through.
Goal
A single numan migrate command that orchestrates the existing nupm compatibility layer end-to-end for everything already proven safe to import, and gives a clear, actionable report for everything that isn't.
Proposed contract
numan migrate runs nupm status internally, imports every package classified importable_now via the existing nupm import machinery, then runs activate — one atomic user-facing action.
--dry-run prints exactly what would be imported/activated without mutating state.
A snapshot is created before any mutation, per the existing "state snapshots before mutation" rule (create_snapshot()).
Re-running numan migrate after Numan gains support for a previously-ineligible package should pick it up without manual re-classification steps.
Acceptance criteria
On a real nupm fixture install, one numan migrate command reaches an activated-equivalent state for the importable_now subset with zero manual config.nu edits.
Real-Nu acceptance test covers a mixed fixture (some importable, some not) and asserts no Nu-state mutation occurs for anything outside importable_now.
Non-goals
Automatically resolving manual_migration_required packages — that stays a human decision.
Problem
#19 gives
numan nupm status/inspecta structured, machine-readable eligibility report, but a nupm user still has to run multiple commands by hand (status, inspect, import, activate) to actually move over. That's friction most early adopters won't push through.Goal
A single
numan migratecommand that orchestrates the existing nupm compatibility layer end-to-end for everything already proven safe to import, and gives a clear, actionable report for everything that isn't.Proposed contract
numan migraterunsnupm statusinternally, imports every package classifiedimportable_nowvia the existingnupm importmachinery, then runsactivate— one atomic user-facing action.--dry-runprints exactly what would be imported/activated without mutating state.create_snapshot()).importable_now(per Nupm migration planner with structured compatibility outcomes #19's reason codes) are reported with their compatibility class and recommended next action — never silently skipped.numan migrateafter Numan gains support for a previously-ineligible package should pick it up without manual re-classification steps.Acceptance criteria
numan migratecommand reaches an activated-equivalent state for theimportable_nowsubset with zero manualconfig.nuedits.importable_now.Non-goals
manual_migration_requiredpackages — that stays a human decision.