#887·mvt

Move --verbose to the mvt-ios and mvt-android command groups

Author: DonnchaCCreated Aug 24, 2026Updated Aug 24, 2026

Current state

Verbose logging is wired per subcommand: seven check-* commands each declare their own -v/--verbose flag and call set_verbose_logging() at the top of their callback (src/mvt/ios/cli.py, src/mvt/android/cli.py), while other subcommands (decrypt-backup, extract-key, check-iocs) offer no verbosity control at all.

With extensible CLI commands (#853), this duplication now extends beyond the core CLI: every external command shipped through mvt.ios.cli_plugins / mvt.android.cli_plugins has to re-declare the flag and re-implement the set_verbose_logging() call to behave like a built-in command.

Proposal

Declare -v/--verbose once on the root Click groups and apply it in the group callback, before subcommand dispatch:

mvt-ios -v check-backup --output ./out ./backup
mvt-android -v check-androidqf ./acquisition.zip

Benefits:

  • One implementation instead of seven; the three commands currently missing the flag gain it for free.
  • External/plugin commands inherit verbosity with zero code — no more copying logging boilerplate into every plugin.
  • The level is set before the group callback produces any output, so early messages (including warnings emitted while loading external commands and modules) are captured under the requested verbosity, which is not the case today.

Compatibility

Keep the existing per-subcommand -v/--verbose flags for a deprecation period as hidden aliases that simply re-apply the level, so mvt-ios check-backup -v keeps working while documentation moves to the group-level form.