diff --git a/prowler/config/config.py b/prowler/config/config.py index 76b84f1b..5ee60c61 100644 --- a/prowler/config/config.py +++ b/prowler/config/config.py @@ -3,6 +3,7 @@ import pathlib from datetime import datetime, timezone from os import getcwd +import requests import yaml from prowler.lib.logger import logger @@ -43,6 +44,19 @@ html_file_suffix = ".html" config_yaml = f"{pathlib.Path(os.path.dirname(os.path.realpath(__file__)))}/config.yaml" +def check_current_version(prowler_version): + try: + latest_version = requests.get( + "https://api.github.com/repos/prowler-cloud/prowler/tags" + ).json()[0]["name"] + if latest_version != prowler_version: + return f"(latest is {latest_version}, upgrade for the latest features)" + else: + return "(it is the latest version, yay!)" + except Exception: + return "" + + def change_config_var(variable, value): try: with open(config_yaml) as f: diff --git a/prowler/lib/cli/parser.py b/prowler/lib/cli/parser.py index 4e1ff059..c04fe072 100644 --- a/prowler/lib/cli/parser.py +++ b/prowler/lib/cli/parser.py @@ -4,6 +4,7 @@ from argparse import RawTextHelpFormatter from prowler.config.config import ( available_compliance_frameworks, + check_current_version, default_output_directory, prowler_version, ) @@ -36,7 +37,7 @@ Detailed documentation at https://docs.prowler.cloud "-v", "--version", action="version", - version=f"Prowler {prowler_version}", + version=f"Prowler {prowler_version} {check_current_version(prowler_version)}", help="show Prowler version", ) # Common arguments parser diff --git a/tests/config/config_test.py b/tests/config/config_test.py index 541cabbc..568d0c58 100644 --- a/tests/config/config_test.py +++ b/tests/config/config_test.py @@ -1,6 +1,16 @@ +from prowler.config.config import check_current_version, prowler_version from prowler.providers.aws.aws_provider import get_aws_available_regions class Test_Config: def test_get_aws_available_regions(self): assert len(get_aws_available_regions()) == 31 + + def test_check_current_version(self): + assert ( + check_current_version(prowler_version) == "(it is the latest version, yay!)" + ) + assert ( + check_current_version("0.0.0") + == f"(latest is {prowler_version}, upgrade for the latest features)" + )