#!/usr/bin/env python3

import sys

from proton_autogen.config import VERSION
from proton_autogen.core import USER_PROFILE, USER_PROFILE_DATA

from proton_autogen.backend import (
    run,
    list_protons,
    list_programs,
)

from proton_autogen.core import (
    print_proton_paths,
    export_default_profiles,
    load_profile_from_cli,
    print_help_env,
    print_about,
)

from proton_autogen.editor import add_game, edit_game_ui
from proton_autogen.i18n import detect_help_env_lang
from proton_autogen.info import print_help
from proton_autogen.diag import print_diagnostic
from proton_autogen.ux.dashboard import start_dashboard

# For install dependance:
#sudo apt update
#sudo apt install libgtk-4-1 libgtk-4-dev gtk-4-examples
#sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-4.0


def main():
    # Launcher UX
    if "--ux" in sys.argv:
        start_dashboard()
        return

    # About project
    if "--about" in sys.argv:
        print_about()
        return

    if "--v" in sys.argv or "--version" in sys.argv:
        print(f"proton-autogen {VERSION}")
        return

    if "--list-protons" in sys.argv:
        list_protons()
        return

    if "--proton-paths" in sys.argv:
        print_proton_paths()
        return

    if "--diag" in sys.argv:
        print_diagnostic()
        return

    if "--list-programs" in sys.argv:
        list_programs()
        return

    if "--help" in sys.argv or "-h" in sys.argv:
        lang = detect_help_env_lang()
        print_help(lang)
        return

    if "--help-env" in sys.argv:
        lang = detect_help_env_lang()
        print_help_env(lang)
        return

    # Mode Pro
    if "--json-profile" in sys.argv:
        export_default_profiles()
        return

    if "--profile" in sys.argv:
        core.USER_PROFILE, core.USER_PROFILE_DATA = load_profile_from_cli(sys.argv)

    # Mode execution
    launch_mode = "proton"

    if "--call" in sys.argv:
        launch_mode = "proton-call"
    elif "--wine" in sys.argv:
        launch_mode = "wine"
    elif "--proton" in sys.argv:
        launch_mode = "proton"

    # Mode prefix
    prefix_mode = "main"

    if "--ps" in sys.argv:
        prefix_mode = "shared"
    elif "--pa" in sys.argv:
        prefix_mode = "auto"
    elif "--pc" in sys.argv:
        prefix_mode = "custom"

    if len(sys.argv) < 2:
        print("Usage: proton-autogen <file.exe>")
        return
    #add_game
    if sys.argv[1] == "add":
        if len(sys.argv) < 3:
            print("Usage: proton-autogen add <file.exe>")
            return
        add_game(sys.argv[2])
        return
    #edit_game_ui
    if sys.argv[1] == "edit":
        if len(sys.argv) < 3:
            print("Usage: proton-autogen edit <file.exe>")
            return
        edit_game_ui(sys.argv[2])
        return

    if sys.argv[1] == "run":
        if len(sys.argv) < 3:
            print("Error: missing file.exe")
            return
        run(sys.argv[2],launch_mode, prefix_mode)
    else:
        run(sys.argv[1],launch_mode, prefix_mode)


if __name__ == "__main__":
    main()
