Skip to content

One-touch numan migrate command for nupm adopters #31

Description

@tonythethompson

Problem

#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()).
  • Packages outside 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.
  • 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.
  • Non-importable packages are listed with reason codes and next actions, matching Nupm migration planner with structured compatibility outcomes #19's JSON schema.
  • 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions