import sys
from pathlib import Path

from colorama import Fore

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

from common import ExitCode, exec_command, exit_message, get_env_variable, print_message

VERSION = sys.argv[1]

print_message(
    "Atenção: Este script será descontinuado em breve."
    "Por favor, atualize o CI utilizando o Bastion."
    "Caso não seja possível, entre em contato com o time de DevSecOps.",
    Fore.YELLOW,
)


def execute_mvn_command(command):
    maven_args = get_env_variable("MAVEN_ARGS")

    if get_env_variable("SCI_DEBUG"):
        maven_args = f"{maven_args} --show-version -X"

    command_result_mvn = exec_command(f"mvn {maven_args} {command}")

    if command_result_mvn.exit_code == ExitCode.ERROR:
        exit_message("Maven command failed. Exiting...")


POM_XML = Path("pom.xml")

if not POM_XML.is_file():
    exit_message("O projeto está usando o script de Maven porém não possui o pom.xml")

print_message(f"Alterando versão para {VERSION}")

if "<tycho-version>" in POM_XML.read_text(encoding="utf-8"):
    if "-" in VERSION:
        version, pre_release_version = VERSION.split("-")
        pre_release_version = pre_release_version.split(".")[0]
        VERSION = f"{version}.{pre_release_version}"

    execute_mvn_command(
        f"org.eclipse.tycho:tycho-versions-plugin:1.7.0:set-version -DnewVersion={VERSION}"
    )
else:
    execute_mvn_command(
        f"versions:set -DgenerateBackupPoms=false -DnewVersion={VERSION}"
    )
