#!/bin/bash if [[ -z "${RN_PROJECT_FOLDER_NAME}" ]]; then echo "Please set the RN_PROJECT_FOLDER_NAME environment variable before running the script." exit 1 fi case $1 in stop-metro) docker exec -it ${RN_PROJECT_FOLDER_NAME} supervisorctl stop npm ;; start-metro) docker exec -it ${RN_PROJECT_FOLDER_NAME} supervisorctl start npm -- --reset-cache docker logs -f ${RN_PROJECT_FOLDER_NAME} ;; metro-logs) docker exec -it ${RN_PROJECT_FOLDER_NAME} cat /var/log/app/npm.log ;; connect-android) docker exec -ti ${RN_PROJECT_FOLDER_NAME} adb connect host.docker.internal ;; run-android) docker exec -ti ${RN_PROJECT_FOLDER_NAME} adb connect host.docker.internal docker exec -ti ${RN_PROJECT_FOLDER_NAME} npx react-native run-android ;; reinstall-node-modules) docker exec -it ${RN_PROJECT_FOLDER_NAME} /bin/bash -c "cd /home/${RN_PROJECT_FOLDER_NAME} && rm -rf node_modules && npm install" ;; shell) if [[ -z "${RN_PROJECT_FOLDER_NAME}" ]]; then echo "Please set the RN_PROJECT_FOLDER_NAME environment variable before running the script." exit 1 fi docker exec -it ${RN_PROJECT_FOLDER_NAME} /bin/bash -c "cd /home/${RN_PROJECT_FOLDER_NAME} && exec /bin/bash" ;; init-ssh) if [[ -z "${SSH_KEY}" ]]; then echo "Please set the SSH_KEY environment variable before running the script." exit 1 fi # generate ssh key if [ ! -f "${SSH_KEY}" ]; then ssh-keygen -t ed25519 -f "${SSH_KEY}" -N "" echo "SSH key generated at ${SSH_KEY}" else echo "SSH key already exists at ${SSH_KEY}" fi # get docker container's IP CONTAINER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${CONTAINER_NAME}) # check if the docker IP is already in the ssh config if grep -q "${CONTAINER_IP}" ~/.ssh/config then echo "SSH config already contains the Docker IP." else echo "Adding Docker IP to SSH config..." echo -e "Host ${CONTAINER_IP}\n\tPort 22\n\tUser root\n\tPubkeyAuthentication yes\n\tIdentityFile ${SSH_KEY}" >> ~/.ssh/config echo "Docker IP added to SSH config." fi ;; clear-known-hosts) if [ "$EUID" -ne 0 ] then echo "Please run this command as root or use sudo." exit 1 fi CONTAINER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${CONTAINER_NAME}) ssh-keygen -R ${CONTAINER_IP} ;; *) echo "Invalid command" echo "Usage: $0 {logs|connect|run-android|stop}" ;; esac