Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better handle non-existent migration line + suggestions with Levenshtein distance #558

Merged
merged 1 commit into from
Aug 24, 2024

Commits on Aug 24, 2024

  1. Better handle non-existent migration line + suggestions with Levensht…

    …ein distance
    
    This is related to #546. That was a documentation problem, but there are
    some code problems that are related.
    
    The first is that an unknown migration line is a panic in the CLI. This
    is a byproduct of the fact that `rivermigrate.New` checks the migration
    line name, but doesn't return an error, so it'd panic instead.
    
    Here, I'm suggesting that we do a small breaking change by having
    `rivermigrate.New` return a possible error. It's not great, but it's
    something that'll easy for people to fix, and might help avoid some
    future panics. An alternative possibility would be to add a new
    `NewWithError` or something of that nature, but it'd make the API a
    little uglier.
    
    Along with that change, we also bring in a change to suggest migration
    lines in case of an unknown one using Levenshtein distances. This is
    aimed at preventing totally unactionable errors in the event of very
    simple misspellings (e.g. "workflow" versus "workflows"). Cobra actually
    already has a similar feature built-in for command misspellings.
    
    I vendored in this repo [1] as a Levenshtein implementation and did a
    little code clean up. I don't want to add another Go module dependency
    for such a simple algorithm (it's just a dozen lines), and I believe
    their MIT license should be compatible.
    
    [1] https://github.com/agnivade/levenshtein/tree/master
    brandur committed Aug 24, 2024
    Configuration menu
    Copy the full SHA
    18d3571 View commit details
    Browse the repository at this point in the history