Files
tdc114plus/scripts/flutter-docker.sh
T

68 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
IMAGE="${FLUTTER_DOCKER_IMAGE:-ghcr.io/cirruslabs/flutter:stable}"
ADB_KEY_DIR="$ROOT_DIR/.android-adb"
CACHE_ROOT="${FLUTTER_DOCKER_CACHE_ROOT:-$ROOT_DIR/.docker-cache/flutter}"
GRADLE_CACHE_DIR="$CACHE_ROOT/gradle"
PUB_CACHE_DIR="$CACHE_ROOT/pub"
ANDROID_LICENSES_DIR="$CACHE_ROOT/android-sdk/licenses"
ANDROID_NDK_DIR="$CACHE_ROOT/android-sdk/ndk"
ANDROID_CMAKE_DIR="$CACHE_ROOT/android-sdk/cmake"
MODE="${1:-flutter}"
if [ "$#" -gt 0 ]; then
shift || true
fi
DOCKER_ENV_ARGS=()
if [ -n "${ADB_SERVER_SOCKET:-}" ]; then
DOCKER_ENV_ARGS+=("-e" "ADB_SERVER_SOCKET=${ADB_SERVER_SOCKET}")
fi
if [ -n "${TDC114_ADB_CONNECT_ADDRESS:-}" ]; then
DOCKER_ENV_ARGS+=("-e" "TDC114_ADB_CONNECT_ADDRESS=${TDC114_ADB_CONNECT_ADDRESS}")
fi
mkdir -p "$ADB_KEY_DIR"
mkdir -p "$GRADLE_CACHE_DIR"
mkdir -p "$PUB_CACHE_DIR"
mkdir -p "$ANDROID_LICENSES_DIR"
mkdir -p "$ANDROID_NDK_DIR"
mkdir -p "$ANDROID_CMAKE_DIR"
docker run --rm \
-u 0:0 \
"${DOCKER_ENV_ARGS[@]}" \
-v "$ROOT_DIR:/workspace" \
-v "$ADB_KEY_DIR:/root/.android" \
-v "$GRADLE_CACHE_DIR:/root/.gradle" \
-v "$PUB_CACHE_DIR:/root/.pub-cache" \
-v "$ANDROID_LICENSES_DIR:/opt/android-sdk-linux/licenses" \
-v "$ANDROID_NDK_DIR:/opt/android-sdk-linux/ndk" \
-v "$ANDROID_CMAKE_DIR:/opt/android-sdk-linux/cmake" \
-w /workspace/app \
"$IMAGE" \
sh -lc '
set -e
if command -v sdkmanager >/dev/null 2>&1; then
yes | sdkmanager --licenses >/tmp/android-sdk-licenses.log 2>&1 || {
cat /tmp/android-sdk-licenses.log >&2
exit 1
}
fi
if [ -n "${TDC114_ADB_CONNECT_ADDRESS:-}" ]; then
adb connect "$TDC114_ADB_CONNECT_ADDRESS" || true
adb devices
fi
if [ "$1" = "adb-devices" ]; then
exit 0
fi
if [ "$1" = "adb" ]; then
shift
exec adb "$@"
fi
flutter pub get
flutter "$@"
chown -R 1000:1000 /workspace/app
' sh "$MODE" "$@"