diff --git a/modules/home/direnv/lib/android.sh b/modules/home/direnv/lib/android.sh new file mode 100644 index 0000000..b25d675 --- /dev/null +++ b/modules/home/direnv/lib/android.sh @@ -0,0 +1,58 @@ +#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_SDK_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 + ;; + -n|--ndk) + ndk_version="$2" + shift 2 + ;; + --) + shift + break + ;; + *) + break + ;; + esac + done + + export ANDROID_SDK_HOME="$ANDROID_HOME" + export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/$ndk_version" + export ANDROID_ROOT="$ANDROID_HOME" + export ANDROID_SDK_ROOT="$ANDROID_SDK_HOME" + export ANDROID_NDK_ROOT="$ANDROID_NDK_HOME" + + PATH_add "$ANDROID_NDK_HOME" + PATH_add "$ANDROID_SDK_HOME/build-tools/$build_tools_version" +}