# shellcheck shell=bash

# shellcheck disable=2155
use_android() {
    if [ -z "$ANDROID_HOME" ]; then
        log_error "use_android: 'ANDROID_HOME' is not defined"
        return 1
    fi

    _use_android_find_latest() {
        local path="$1"
        local version

        version="$(semver_search "$path" "" "")"
        if [ -z "$version" ]; then
            log_error "use_android: did not find any version at '$path'"
            return 1
        fi

        printf '%s' "$version"
    }

    # Default to the latest version found
    local ndk_version="$(_use_android_find_latest "$ANDROID_HOME/ndk" || return 1)"
    local build_tools_version="$(_use_android_find_latest "$ANDROID_HOME/build-tools" || return 1)"

    unset -f _use_android_find_latest

    # Allow changing the default version through a command line switch
    while true; do
        case "$1" in
            -b|--build-tools)
                build_tools_version="$2"
                shift 2
                if ! [ -e "$ANDROID_HOME/build-tools/$build_tools_version" ]; then
                    log_error "use_android: build-tools version '$build_tools_version' does not exist"
                fi
                ;;
            -n|--ndk)
                ndk_version="$2"
                shift 2
                if ! [ -e "$ANDROID_HOME/ndk/$ndk_version" ]; then
                    log_error "use_android: NDK version '$ndk_version' does not exist"
                fi
                ;;
            --)
                shift
                break
                ;;
            *)
                break
                ;;
        esac
    done

    export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/$ndk_version"
    export ANDROID_ROOT="$ANDROID_HOME"
    export ANDROID_SDK_ROOT="$ANDROID_HOME"
    export ANDROID_NDK_ROOT="$ANDROID_NDK_HOME"

    PATH_add "$ANDROID_NDK_HOME"
    PATH_add "$ANDROID_HOME/build-tools/$build_tools_version"
}