diff --git a/devbox/devbox.local/devbox b/devbox/devbox.local/devbox index ffda6c6..ffde28b 100644 --- a/devbox/devbox.local/devbox +++ b/devbox/devbox.local/devbox @@ -446,43 +446,6 @@ get_port() { echo "$port" } -check_jq() { - # 从参数中获取 OS 和 ARCH,默认值分别为 auto - local target_os target_arch - target_os="$(get_arg '--os' 'auto')" - target_arch="$(get_arg '--arch' 'auto')" - - if ! command -v jq >/dev/null 2>&1; then - echo "[INFO] 'jq' is not installed. Installing jq..." - case "$target_os" in - darwin) - if command -v brew >/dev/null 2>&1; then - brew install jq - else - echo "[ERROR] brew not found. Please install jq manually." - exit 1 - fi - ;; - linux | wsl2 | auto) - if command -v apt-get >/dev/null 2>&1; then - sudo apt-get update && sudo apt-get install -y jq - elif command -v yum >/dev/null 2>&1; then - sudo yum install -y epel-release && sudo yum install -y jq - else - echo "[ERROR] apt-get or yum not found. Please install jq manually." - exit 1 - fi - ;; - *) - echo "[ERROR] Unsupported OS: $target_os" - exit 1 - ;; - esac - else - echo "[INFO] 'jq' is already installed." - fi -} - # :command.command_functions # :command.function devbox_init_command() { @@ -852,14 +815,8 @@ if [[ $USE_LOCAL_COMPONENT_VAL == true ]]; then exit 1 fi - - # Check if jq is installed, if not install it - check_jq - # Get Gitea data volume mount point - GITEA_DATA=$(docker volume inspect devbox_freeleaps2-gitea-data | jq -r '.[0].Mountpoint') - echo "Gitea data volume mount point: $GITEA_DATA" echo "==> Starting Gitea, MongoDB, RabbitMQ containers..." # Start local components by docker compose file and start up specified services. docker compose file is in the same directory as the script (docker-compose.dev.arm64.new.yaml) @@ -889,42 +846,49 @@ if [[ $USE_LOCAL_COMPONENT_VAL == true ]]; then echo "${component} container created: $component_container_id" - # Check if devbox_freeleaps2-gitea-data exists, if not create a docker volume for gitea data, if exists then remove it and create a new one - if docker volume ls | grep -q "devbox_freeleaps2-gitea-data"; then - docker volume rm devbox_freeleaps2-gitea-data - fi - - docker volume create devbox_freeleaps2-gitea-data || { - echo "ERROR: Failed to create volume devbox_freeleaps2-gitea-data." - exit 1 - } - - # Check volume created successfully - if ! docker volume ls | grep -q "devbox_freeleaps2-gitea-data"; then - echo "ERROR: Failed to create volume devbox_freeleaps2-gitea-data." - exit 1 - fi - - if [[ -d "${GITEA_DATA}/gitea" ]]; then - echo "Gitea data exist, skipping..." + # Get the owner group of the WORKING_HOME + if [[ "$(uname)" == "Darwin" ]]; then + OWNER_GROUP=$(stat -f "%Su:%Sg" "${WORKING_HOME}") else - echo "Gitea data not exist, copying..." - sudo rm -rf ${GITEA_DATA}/git - sudo rm -rf ${GITEA_DATA}/gitea - sudo rm -rf ${GITEA_DATA}/ssh - sudo mv data/git ${GITEA_DATA}/ - sudo mv data/gitea ${GITEA_DATA}/ - sudo mv data/ssh ${GITEA_DATA}/ - sudo chown -R freedev:freedev ${GITEA_DATA} - echo "Gitea data copying is done" - # Check if gitea data copied successfully - if [[ ! -d "${GITEA_DATA}/gitea" ]]; then - echo "ERROR: Failed to copy gitea data." - exit 1 - fi + OWNER_GROUP=$(stat -c "%U:%G" "${WORKING_HOME}") + fi - # restart gitea container - docker-compose -f docker-compose.dev.arm64.new.yaml restart gitea + # Echo OWNER_GROUP + echo "OWNER_GROUP: $OWNER_GROUP" + + # Copy gitea data to the gitea container + GITEA_HOST_DIR="${WORKING_HOME}/freeleaps2-gitea" + + # Remove existing data directories + sudo rm -rf ${GITEA_HOST_DIR}/git + sudo rm -rf ${GITEA_HOST_DIR}/gitea + sudo rm -rf ${GITEA_HOST_DIR}/ssh + + # Move data directories to the gitea container + sudo mv data/git ${GITEA_HOST_DIR}/ + sudo mv data/gitea ${GITEA_HOST_DIR}/ + sudo mv data/ssh ${GITEA_HOST_DIR}/ + + # Change the owner group of the gitea data directories + sudo chown -R "${OWNER_GROUP}" ${GITEA_HOST_DIR} + echo "Gitea data copying is done" + + # Check if gitea data directories exist in the gitea container + if [[ ! -d "${GITEA_HOST_DIR}/gitea" ]]; then + echo "ERROR: Failed to copy gitea data." + exit 1 + fi + + # restart gitea container + docker-compose -f docker-compose.dev.arm64.new.yaml restart rabbitmq + sleep 10 + + docker-compose -f docker-compose.dev.arm64.new.yaml restart gitea + sleep 5 + + # restart notification if it is in the start_components + if [[ " ${start_components[@]} " =~ "notification" ]]; then + docker-compose -f docker-compose.dev.arm64.new.yaml restart notification fi else echo '============================================' @@ -956,6 +920,7 @@ echo "$USE_LOCAL_COMPONENT" > "$WORKING_HOME/.use-local-component" pushd $WORKING_HOME + IS_START_FRONTEND=false # Make a user input (Y/N) to continue pull freeleaps.com code and start if N then exit