#!/usr/bin/env python3.11
# Released under the MIT License. See LICENSE for details.
#
"""A collection of commands for use with this project.

All top level functions here can be run by passing them as the first
argument on the command line. (or pass no arguments to get a list of them).
"""

# Note: we import as little as possible here at the module level to
# keep launch times fast; most imports should happen within individual command
# functions.

from __future__ import annotations

from typing import TYPE_CHECKING

# Pull in commands we want to expose. Its more efficient to define them in
# modules rather than inline here because we'll be able to load them via pyc.
# pylint: disable=unused-import
from efrotools.pcommand import (
    PROJROOT,
    pcommand_main,
    formatcode,
    formatscripts,
    formatmakefile,
    cpplint,
    pylint,
    pylint_files,
    mypy,
    runmypy,
    dmypy,
    tool_config_install,
    sync,
    sync_all,
    scriptfiles,
    pycharm,
    clioncode,
    androidstudiocode,
    makefile_target_list,
    spelling,
    spelling_all,
    pytest,
    echo,
    compile_python_files,
    pyver,
    try_repeat,
    xcodebuild,
    xcoderun,
    tweak_empty_py_files,
    make_ensure,
    make_target_debug,
)
from efrotools.pcommand2 import (
    with_build_lock,
)
from batools.pcommand import (
    resize_image,
    check_clean_safety,
    archive_old_builds,
    lazy_increment_build,
    get_master_asset_src_dir,
    androidaddr,
    push_ipa,
    printcolors,
    gen_fulltest_buildfile_android,
    gen_fulltest_buildfile_windows,
    gen_fulltest_buildfile_apple,
    gen_fulltest_buildfile_linux,
    prune_includes,
    python_version_android,
    python_version_apple,
    python_build_apple,
    python_version_android_base,
    python_build_apple_debug,
    python_build_android,
    python_build_android_debug,
    python_android_patch,
    python_android_patch_ssl,
    python_apple_patch,
    python_gather,
    python_gather_apple,
    python_gather_android,
    python_winprune,
    capitalize,
    upper,
    efrocache_update,
    efrocache_get,
    get_modern_make,
    warm_start_asset_build,
    gendocs,
    list_pip_reqs,
    install_pip_reqs,
    checkenv,
    ensure_prefab_platform,
    prefab_run_var,
    prefab_binary_path,
    make_prefab,
    lazybuild,
    efro_gradle,
    stage_assets,
    update_project,
    cmake_prep_dir,
    gen_binding_code,
    gen_flat_data_code,
    wsl_path_to_win,
    wsl_build_check_win_drive,
    genchangelog,
    android_sdk_utils,
    logcat,
    gen_python_enums_module,
    gen_python_init_module,
    gen_dummy_modules,
    version,
)
from batools.pcommand2 import (
    gen_monolithic_register_modules,
    stage_server_file,
    py_examine,
    clean_orphaned_assets,
    win_ci_install_prereqs,
    win_ci_binary_build,
    update_cmake_prefab_lib,
    android_archive_unstripped_libs,
)

# pylint: enable=unused-import

if TYPE_CHECKING:
    pass

if __name__ == '__main__':
    pcommand_main(globals())
