from .crew_xUnit import xunit_generation
from .crew_gherkin import generate_gherkin
from .crew_cypress import generate_cypress
import argparse
import os
from dotenv import load_dotenv

def main() -> str:
    parser = argparse.ArgumentParser(description="Processa os parâmetros")
    parser.add_argument("generate", type=str, help="O que você deseja gerar (gherkin ou xunit)")
    parser.add_argument("--andes", type=str, help="Casos de usuário para gerar o Gherkin")
    parser.add_argument("--vue_path", type=str, help="Caminho para o arquivo vue que será usado para gerar o teste black box")
    parser.add_argument("--user_case", type=str, help="Casos de usuário para gerar o Gherkin")
    parser.add_argument("--feature", type=str, help="A feature para gerar o código xUnit")
    parser.add_argument("--dto_source", type=str, help="O caminho para os arquivos DTO")
    parser.add_argument("--swagger_path", type=str, help="O caminho para o documento Swagger")
    args = parser.parse_args()

    if args.generate == 'gherkin':
        if not args.user_case:
            parser.error("--user_case deve ser fornecido quando generate é 'gherkin'")
        else:
            generate_gherkin(args.user_case)

    elif args.generate == "xunit":
        if not args.feature:
            parser.error("--feature deve ser fornecida quando generate é 'xunit'")
        else:
            # if not args.dto_source:
            #     parser.error("--dto_source deve ser fornecida quando --generate é 'xunit'")

            # if not args.swagger_path:
            #     parser.error("--swagger_path deve ser fornecida quando --generate é 'xunit'")

            swagger_path = os.getenv("SWAGGER_PATH")
            dto_source = os.getenv("DTO_SOURCE")
            xunit_generation(args.feature, swagger_path, dto_source)
    
    elif args.generate == "cypress":
        if not args.vue_path:
            parser.error("--vue_path deve ser fornecida quadno generate é cypress")
        else:
            generate_cypress(args.vue_path)
    
    else:
        parser.error("argumento generate desconhecido")
            
    

if __name__ == "__main__":
    main()