From d7af5e4ea9356adc7d79dc4f9d7da122204b6ec0 Mon Sep 17 00:00:00 2001 From: Nimrod Adam Date: Wed, 15 Jan 2025 19:33:16 +0100 Subject: [PATCH 1/2] Add shell-completion commands --- src/mvt/android/cli.py | 17 +++++++++++++++++ src/mvt/common/help.py | 3 +++ src/mvt/ios/cli.py | 20 ++++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/src/mvt/android/cli.py b/src/mvt/android/cli.py index 8e9086fa3..00b36bb34 100644 --- a/src/mvt/android/cli.py +++ b/src/mvt/android/cli.py @@ -6,6 +6,8 @@ import logging import click +from quick_click_auto import enable_click_shell_completion +from quick_click_auto.constants import ShellType from mvt.common.cmd_check_iocs import CmdCheckIOCS from mvt.common.help import ( @@ -31,6 +33,7 @@ HELP_MSG_HASHES, HELP_MSG_CHECK_IOCS, HELP_MSG_STIX2, + HELP_MSG_COMMAND_COMPLETION_ANDROID, ) from mvt.common.logo import logo from mvt.common.updates import IndicatorsUpdates @@ -69,6 +72,20 @@ def version(): return +# ============================================================================== +# Command: shell-completion +# ============================================================================== + + +@cli.command("shell-completion", help=HELP_MSG_COMMAND_COMPLETION_ANDROID) +def shell_completion(): + enable_click_shell_completion( + program_name="mvt-android", + shells={ShellType.BASH, ShellType.ZSH}, + verbose=True, + ) + + # ============================================================================== # Command: download-apks # ============================================================================== diff --git a/src/mvt/common/help.py b/src/mvt/common/help.py index 0cca7ab8c..d5bf8424f 100644 --- a/src/mvt/common/help.py +++ b/src/mvt/common/help.py @@ -31,6 +31,8 @@ HELP_MSG_EXTRACT_KEY = "Extract decryption key from an iTunes backup" HELP_MSG_CHECK_IOS_BACKUP = "Extract artifacts from an iTunes backup" HELP_MSG_CHECK_FS = "Extract artifacts from a full filesystem dump" +HELP_MSG_COMMAND_COMPLETION_IOS = "Activate tab autocompletion for mvt-ios." + # Android Specific HELP_MSG_SERIAL = "Specify a device serial number or HOST:PORT connection string" @@ -49,3 +51,4 @@ HELP_MSG_CHECK_BUGREPORT = "Check an Android Bug Report" HELP_MSG_CHECK_ANDROID_BACKUP = "Check an Android Backup" HELP_MSG_CHECK_ANDROIDQF = "Check data collected with AndroidQF" +HELP_MSG_COMMAND_COMPLETION_ANDROID = "Activate tab autocompletion for mvt-android." diff --git a/src/mvt/ios/cli.py b/src/mvt/ios/cli.py index 1d06c9662..23b3ad8cf 100644 --- a/src/mvt/ios/cli.py +++ b/src/mvt/ios/cli.py @@ -8,6 +8,9 @@ import os import click +from quick_click_auto import enable_click_shell_completion +from quick_click_auto.constants import ShellType + from rich.prompt import Prompt from mvt.common.cmd_check_iocs import CmdCheckIOCS @@ -37,6 +40,7 @@ HELP_MSG_CHECK_IOCS, HELP_MSG_STIX2, HELP_MSG_CHECK_IOS_BACKUP, + HELP_MSG_COMMAND_COMPLETION_IOS, ) from .cmd_check_backup import CmdIOSCheckBackup from .cmd_check_fs import CmdIOSCheckFS @@ -69,9 +73,25 @@ def version(): return +# ============================================================================== +# Command: shell-completion +# ============================================================================== + + +@cli.command("shell-completion", help=HELP_MSG_COMMAND_COMPLETION_IOS) +def shell_completion(): + enable_click_shell_completion( + program_name="mvt-ios", + shells={ShellType.BASH}, + verbose=True, + ) + + # ============================================================================== # Command: decrypt-backup # ============================================================================== + + @cli.command( "decrypt-backup", context_settings=CONTEXT_SETTINGS, help=HELP_MSG_DECRYPT_BACKUP ) From ce8360bba1210029feb41ccf192b475eec043c0f Mon Sep 17 00:00:00 2001 From: Nimrod Adam Date: Fri, 24 Jan 2025 17:40:45 +0100 Subject: [PATCH 2/2] Add quick-click-auto requirement --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index b2faba754..feac2b822 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,6 +32,7 @@ dependencies = [ "cryptography >=42.0.5", "pyyaml >=6.0", "pyahocorasick >= 2.0.0", + "quick-click-auto >= 1.0.5" ] requires-python = ">= 3.8"