260f27728b
Add a real Gradle wrapper, local SDK wiring, and the missing Android study screens so the module builds cleanly.
61 lines
1.5 KiB
Bash
Executable File
61 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROPERTIES_FILE="$APP_DIR/gradle/wrapper/gradle-wrapper.properties"
|
|
GRADLE_USER_HOME="${GRADLE_USER_HOME:-$HOME/.gradle}"
|
|
|
|
if [[ ! -f "$PROPERTIES_FILE" ]]; then
|
|
echo "Missing $PROPERTIES_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
distribution_url=""
|
|
while IFS='=' read -r key value; do
|
|
case "$key" in
|
|
distributionUrl)
|
|
distribution_url="${value//\\:/:}"
|
|
;;
|
|
esac
|
|
done < "$PROPERTIES_FILE"
|
|
|
|
if [[ -z "$distribution_url" ]]; then
|
|
echo "Unable to read distributionUrl from $PROPERTIES_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
gradle_version="${distribution_url##*/gradle-}"
|
|
gradle_version="${gradle_version%-bin.zip}"
|
|
gradle_version="${gradle_version%-all.zip}"
|
|
|
|
dists_dir="$GRADLE_USER_HOME/wrapper/dists/gradle-${gradle_version}-bin"
|
|
|
|
shopt -s nullglob
|
|
for candidate in "$dists_dir"/*/gradle-"$gradle_version"; do
|
|
if [[ -x "$candidate/bin/gradle" ]]; then
|
|
exec "$candidate/bin/gradle" "$@"
|
|
fi
|
|
done
|
|
|
|
download_dir="$dists_dir/manual/gradle-$gradle_version"
|
|
if [[ ! -x "$download_dir/bin/gradle" ]]; then
|
|
mkdir -p "$dists_dir/manual"
|
|
tmp_zip="$(mktemp)"
|
|
cleanup() { rm -f "$tmp_zip"; }
|
|
trap cleanup EXIT
|
|
|
|
if command -v curl >/dev/null 2>&1; then
|
|
curl -fsSL "$distribution_url" -o "$tmp_zip"
|
|
elif command -v wget >/dev/null 2>&1; then
|
|
wget -qO "$tmp_zip" "$distribution_url"
|
|
else
|
|
echo "curl or wget is required to download Gradle" >&2
|
|
exit 1
|
|
fi
|
|
|
|
unzip -q "$tmp_zip" -d "$dists_dir/manual"
|
|
fi
|
|
|
|
exec "$download_dir/bin/gradle" "$@"
|