Initial clean project state

This commit is contained in:
ajp_anton
2026-05-04 11:59:40 +00:00
commit 3f187e911b
141 changed files with 27112 additions and 0 deletions
+95
View File
@@ -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"