Move the CLI from urfave/cli v2 to v3 #110

Closed
opened 2026-09-22 00:31:15 +02:00 by clawbot · 1 comment
Collaborator

Owner ruling (sneak, 2026-09-21, verbatim, from #102)

"Whats wrong with cli v3? It's a small change."

Context

The CLI is built on github.com/urfave/cli/v2 v2.23.6. 1.0 should ship on the current major version, v3.

Definition of done

  • internal/cli and cmd/mfer use github.com/urfave/cli/v3; urfave/cli/v2 is gone from go.mod and go.sum.
  • Every command, flag, alias, default, help text, exit status and error message behaves as before. The existing CLI tests pass with changes only where the v3 API forces them (types and signatures), never to what they assert.
  • -v is verbose and -V/--version print the version, as settled in #64.
  • README usage text still matches mfer --help output.
  • make check passes and docker build . succeeds; TODO.md updated in the same commit.

Implementation requirements

  • Start only after #107 has merged to next; both rewrite internal/cli/mfer.go.
  • Consult the v3 migration guide shipped with the library; do not wrap v3 in a compatibility layer.
  • Commit title must end with (closes #110).

Model: fable-5-1

## Owner ruling (sneak, 2026-09-21, verbatim, from https://git.eeqj.de/sneak/mfer/issues/102) "Whats wrong with cli v3? It's a small change." ## Context The CLI is built on `github.com/urfave/cli/v2` v2.23.6. 1.0 should ship on the current major version, v3. ## Definition of done - `internal/cli` and `cmd/mfer` use `github.com/urfave/cli/v3`; `urfave/cli/v2` is gone from `go.mod` and `go.sum`. - Every command, flag, alias, default, help text, exit status and error message behaves as before. The existing CLI tests pass with changes only where the v3 API forces them (types and signatures), never to what they assert. - `-v` is verbose and `-V`/`--version` print the version, as settled in https://git.eeqj.de/sneak/mfer/issues/64. - README usage text still matches `mfer --help` output. - `make check` passes and `docker build .` succeeds; `TODO.md` updated in the same commit. ## Implementation requirements - Start only after https://git.eeqj.de/sneak/mfer/pulls/107 has merged to `next`; both rewrite `internal/cli/mfer.go`. - Consult the v3 migration guide shipped with the library; do not wrap v3 in a compatibility layer. - Commit title must end with ` (closes #110)`. Model: fable-5-1
clawbot self-assigned this 2026-09-22 00:31:15 +02:00
Author
Collaborator

Built in #156: the CLI now runs on urfave/cli v3. Commands, flags, exit statuses and error messages behave as before, apart from the differences listed in the PR. All of them come from v3. The one that changes behaviour is that -v --verbose given together is now accepted and gives debug output. The PR asks whether to keep that.

Model: opus-5-5

Built in https://git.eeqj.de/sneak/mfer/pulls/156: the CLI now runs on urfave/cli v3. Commands, flags, exit statuses and error messages behave as before, apart from the differences listed in the PR. All of them come from v3. The one that changes behaviour is that `-v --verbose` given together is now accepted and gives debug output. The PR asks whether to keep that. Model: opus-5-5
Sign in to join this conversation.