fix(version): execute check current version function only when -v (#2263)

This commit is contained in:
Sergio Garcia
2023-04-24 12:45:59 +02:00
committed by GitHub
parent 63501a0d59
commit 8e63fa4594
3 changed files with 23 additions and 13 deletions

View File

@@ -46,19 +46,20 @@ html_file_suffix = ".html"
config_yaml = f"{pathlib.Path(os.path.dirname(os.path.realpath(__file__)))}/config.yaml" config_yaml = f"{pathlib.Path(os.path.dirname(os.path.realpath(__file__)))}/config.yaml"
def check_current_version(prowler_version): def check_current_version():
try: try:
prowler_version_string = f"Prowler {prowler_version}"
release_response = requests.get( release_response = requests.get(
"https://api.github.com/repos/prowler-cloud/prowler/tags" "https://api.github.com/repos/prowler-cloud/prowler/tags"
) )
latest_version = release_response.json()[0]["name"] latest_version = release_response.json()[0]["name"]
if latest_version != prowler_version: if latest_version != prowler_version:
return f"(latest is {latest_version}, upgrade for the latest features)" return f"{prowler_version_string} (latest is {latest_version}, upgrade for the latest features)"
else: else:
return "(it is the latest version, yay!)" return f"{prowler_version_string} (it is the latest version, yay!)"
except Exception as e: except Exception as error:
print(e) logger.error(f"{error.__class__.__name__}: {error}")
return "" return f"{prowler_version_string}"
def change_config_var(variable, value): def change_config_var(variable, value):

View File

@@ -6,7 +6,6 @@ from prowler.config.config import (
available_compliance_frameworks, available_compliance_frameworks,
check_current_version, check_current_version,
default_output_directory, default_output_directory,
prowler_version,
) )
from prowler.providers.aws.aws_provider import get_aws_available_regions from prowler.providers.aws.aws_provider import get_aws_available_regions
from prowler.providers.aws.lib.arn.arn import is_valid_arn from prowler.providers.aws.lib.arn.arn import is_valid_arn
@@ -36,8 +35,7 @@ Detailed documentation at https://docs.prowler.cloud
self.parser.add_argument( self.parser.add_argument(
"-v", "-v",
"--version", "--version",
action="version", action="store_true",
version=f"Prowler {prowler_version} {check_current_version(prowler_version)}",
help="show Prowler version", help="show Prowler version",
) )
# Common arguments parser # Common arguments parser
@@ -68,6 +66,10 @@ Detailed documentation at https://docs.prowler.cloud
if args: if args:
sys.argv = args sys.argv = args
if len(sys.argv) == 2 and sys.argv[1] in ("-v", "--version"):
print(check_current_version())
sys.exit(0)
# Set AWS as the default provider if no provider is supplied # Set AWS as the default provider if no provider is supplied
if len(sys.argv) == 1: if len(sys.argv) == 1:
sys.argv = self.__set_default_provider__(sys.argv) sys.argv = self.__set_default_provider__(sys.argv)

View File

@@ -6,6 +6,7 @@ from prowler.config.config import check_current_version
from prowler.providers.aws.aws_provider import get_aws_available_regions from prowler.providers.aws.aws_provider import get_aws_available_regions
MOCK_PROWLER_VERSION = "3.3.0" MOCK_PROWLER_VERSION = "3.3.0"
MOCK_OLD_PROWLER_VERSION = "0.0.0"
def mock_prowler_get_latest_release(_): def mock_prowler_get_latest_release(_):
@@ -25,10 +26,16 @@ class Test_Config:
@mock.patch("prowler.config.config.prowler_version", new=MOCK_PROWLER_VERSION) @mock.patch("prowler.config.config.prowler_version", new=MOCK_PROWLER_VERSION)
def test_check_current_version_with_latest(self): def test_check_current_version_with_latest(self):
assert ( assert (
check_current_version(MOCK_PROWLER_VERSION) check_current_version()
== "(it is the latest version, yay!)" == f"Prowler {MOCK_PROWLER_VERSION} (it is the latest version, yay!)"
) )
@mock.patch(
"prowler.config.config.requests.get", new=mock_prowler_get_latest_release
)
@mock.patch("prowler.config.config.prowler_version", new=MOCK_OLD_PROWLER_VERSION)
def test_check_current_version_with_old(self):
assert ( assert (
check_current_version("0.0.0") check_current_version()
== f"(latest is {MOCK_PROWLER_VERSION}, upgrade for the latest features)" == f"Prowler {MOCK_OLD_PROWLER_VERSION} (latest is {MOCK_PROWLER_VERSION}, upgrade for the latest features)"
) )