Initial clean project state
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
is_java_home_usable() {
|
||||
local candidate="${1:-}"
|
||||
if [[ -z "$candidate" || ! -x "$candidate/bin/java" || ! -x "$candidate/bin/javac" ]]; then
|
||||
return 1
|
||||
fi
|
||||
local version
|
||||
version="$("$candidate/bin/javac" -version 2>&1 | awk '{print $2}' | cut -d. -f1)"
|
||||
[[ "$version" =~ ^[0-9]+$ ]] || return 1
|
||||
[[ "$version" -ge 17 ]]
|
||||
}
|
||||
|
||||
resolve_java_home_from_path() {
|
||||
if ! command -v javac >/dev/null 2>&1; then
|
||||
return 1
|
||||
fi
|
||||
local javac_path candidate
|
||||
javac_path="$(readlink -f "$(command -v javac)")"
|
||||
candidate="$(cd "$(dirname "$javac_path")/.." && pwd)"
|
||||
if is_java_home_usable "$candidate"; then
|
||||
printf '%s\n' "$candidate"
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
resolve_java_home() {
|
||||
if is_java_home_usable "${JAVA_HOME:-}"; then
|
||||
printf '%s\n' "$JAVA_HOME"
|
||||
return 0
|
||||
fi
|
||||
if resolve_java_home_from_path >/dev/null 2>&1; then
|
||||
resolve_java_home_from_path
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
is_sdk_dir_usable() {
|
||||
local candidate="${1:-}"
|
||||
[[ -n "$candidate" && -x "$candidate/cmdline-tools/latest/bin/sdkmanager" ]]
|
||||
}
|
||||
|
||||
resolve_sdk_dir() {
|
||||
local candidates=(
|
||||
"${ANDROID_SDK_ROOT:-}"
|
||||
"${ANDROID_HOME:-}"
|
||||
"$HOME/Android/Sdk"
|
||||
"$HOME/android-sdk"
|
||||
"/opt/android-sdk"
|
||||
"/usr/lib/android-sdk"
|
||||
)
|
||||
local candidate
|
||||
for candidate in "${candidates[@]}"; do
|
||||
if is_sdk_dir_usable "$candidate"; then
|
||||
printf '%s\n' "$candidate"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
write_local_properties() {
|
||||
local sdk_dir="$1"
|
||||
printf 'sdk.dir=%s\n' "$sdk_dir" > "$repo_root/local.properties"
|
||||
}
|
||||
|
||||
JAVA_HOME="$(resolve_java_home)" || {
|
||||
echo "Missing usable JDK 17+." >&2
|
||||
echo "Install openjdk-17-jdk globally and make it available via JAVA_HOME or PATH." >&2
|
||||
return 1 2>/dev/null || exit 1
|
||||
}
|
||||
|
||||
ANDROID_SDK_ROOT="$(resolve_sdk_dir)" || {
|
||||
echo "Missing usable Android SDK." >&2
|
||||
echo "Expected cmdline-tools/latest/bin/sdkmanager in one of:" >&2
|
||||
echo " \$ANDROID_SDK_ROOT, \$ANDROID_HOME, \$HOME/Android/Sdk, \$HOME/android-sdk, /opt/android-sdk, or /usr/lib/android-sdk" >&2
|
||||
return 1 2>/dev/null || exit 1
|
||||
}
|
||||
|
||||
export JAVA_HOME
|
||||
export ANDROID_SDK_ROOT
|
||||
export ANDROID_HOME="$ANDROID_SDK_ROOT"
|
||||
export PATH="$JAVA_HOME/bin:$ANDROID_SDK_ROOT/platform-tools:$PATH"
|
||||
|
||||
write_local_properties "$ANDROID_SDK_ROOT"
|
||||
|
||||
echo "JAVA_HOME=$JAVA_HOME"
|
||||
echo "ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT"
|
||||
echo "ANDROID_TOOLCHAIN_ORIGIN=global"
|
||||
Reference in New Issue
Block a user