react-native-dockerized/dockdroid.sh

77 lines
2.5 KiB
Bash
Executable File

#!/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