# src/automation11/cli.py

import argparse
from .config import ensure_config_exists, load_config
from .api import publish_report


def main():
    parser = argparse.ArgumentParser(prog="11automation")
    subparsers = parser.add_subparsers(dest="command")

    init_parser = subparsers.add_parser(
        "init",
        help="Create or update config.json"
    )

    init_parser.add_argument("--typeOfReport")
    init_parser.add_argument("--projectId")
    init_parser.add_argument("--file")
    init_parser.add_argument("--testEnv")
    init_parser.add_argument("--testType")
    init_parser.add_argument("--tags", nargs="*")
    init_parser.add_argument("--browser")
    init_parser.add_argument("--browserVersion")
    init_parser.add_argument("--iterationId")
    init_parser.add_argument("--token")
    init_parser.add_argument("--email")
    init_parser.add_argument("--password")
    init_parser.add_argument("--baseUrl")

    subparsers.add_parser(
        "start",
        help="Start automation using config.json"
    )

    args = parser.parse_args()

    if args.command == "init":
        config_file = ensure_config_exists(
            typeOfReport=args.typeOfReport,
            projectId=args.projectId,
            file=args.file,
            testEnv=args.testEnv,
            testType=args.testType,
            tags=args.tags,
            browser=args.browser,
            browserVersion=args.browserVersion,
            iterationId=args.iterationId,
            token=args.token,
            email=args.email,
            password=args.password,
            baseUrl=args.baseUrl,
        )

        print(f"Config updated: {config_file}")

    elif args.command == "start":
        config = load_config()
        publish_report(config)

    else:
        parser.print_help()