#!/bin/bash fail() { echo "$*" >&2 exit 1 } declare project=$1 if [[ "${project}" == "" ]]; then echo "usage: $0 PROJECT" >&2 exit 1 fi declare full_path=$(realpath "projects/${project}") declare project_type=$(cat "${full_path}/project_type") if [[ "${project_type}" == "expo" ]]; then echo "Launching EXPO container" ports=( "8081:8081" ) volumes=( ./flutter:/usr/bin/flutter ./AndroidSDK:/opt/android-sdk:rw ./scripts:/scripts:rw /tmp/.X11-unix:/tmp/.X11-unix $(pwd)/AndroidUser:/root/.android ) fi # Always add the project volume mount volumes=("${volumes[@]}" "${full_path}:/projects/${project}") if [ ${#ports[@]} -ne 0 ]; then port_arg="" for port in "${ports[@]}"; do port_arg="${port_arg} -p ${port}" done fi if [ ${#volumes[@]} -ne 0 ]; then volume_arg="" for volume in "${volumes[@]}"; do volume_arg="${volume_arg} -v ${volume}" done fi # --privileged is needed to be able to run the emulator docker_cmd="docker compose run --rm --name ${project}-seed ${port_arg} ${volume_arg} android-dev-container -- run ${project} $(hostname)" echo "${docker_cmd}" if ! ${docker_cmd}; then fail "Unable to start container for ${project}" fi