import sys

sys.path.append("./senior-ci")

from common import exit_message
from common.getopt_helper import GetOptBuilder, Param
from common.sonar_helper import SonarHelper, SonarScannerType


class SonarScannerCI(GetOptBuilder):
    def __init__(self, argv):
        builder = super()
        builder.__init__(argv)

        type_param = Param("type")
        skip_param = Param("skip", default_value="False")

        builder.add_param(type_param)
        builder.add_param(skip_param)

        builder.build()

        scanner_type_str: str = type_param.get_param_value()
        skip_build_str = skip_param.get_param_value()

        skip_build = skip_build_str != "False"

        scanner_type = None

        if scanner_type_str:
            try:
                scanner_type = SonarScannerType[scanner_type_str]
            except Exception:
                all_scanner_types = [s_t.value for s_t in SonarScannerType]
                exit_message(
                    f"Tipo informado inválido, os válidos são {all_scanner_types}",
                )

        self.sonar_helper = SonarHelper(
            sonar_scanner_type=scanner_type, skip_build=skip_build
        )

    def exec(self):
        self.sonar_helper.scanner_analyze()


sonar_scanner_ci = SonarScannerCI(sys.argv[1:])
sonar_scanner_ci.exec()
