From e4afdeea05b4f02e532fdf15ed53f3fd28fc058b Mon Sep 17 00:00:00 2001 From: timqiu <9145422+cocoonwind@user.noreply.gitee.com> Date: Tue, 18 Mar 2025 13:33:53 +0800 Subject: [PATCH] Update for package update --- devbox/cli/devbox | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/devbox/cli/devbox b/devbox/cli/devbox index 85ac74d..b4fcd93 100644 --- a/devbox/cli/devbox +++ b/devbox/cli/devbox @@ -757,6 +757,11 @@ if true ; then fi popd > /dev/null + # Install pipreqs for generating requirements.txt + python3.11 -m pip install pipreqs + + echo "==> [INIT] Backend environment initialization completed." + ##################################### # Initialize the frontend environment, including Node.js and npm ##################################### @@ -908,6 +913,24 @@ docker exec -i "$DEVBOX_NAME" bash < [BACKEND] Install backend dependencies..." pip install -r /home/devbox/freeleaps/apps/requirements.txt + # Backup the requirements.txt file + cp /home/devbox/freeleaps/apps/requirements.txt /home/devbox/freeleaps/apps/requirements.txt.bak + + # Check by pipreqs to generate requirements.txt + pipreqs /home/devbox/freeleaps/apps --force --use-local --savepath /home/devbox/freeleaps/apps/requirements.txt + + # Check if requirements.txt and requirements.txt.bak are different + if ! diff /home/devbox/freeleaps/apps/requirements.txt /home/devbox/freeleaps/apps/requirements.txt.bak; then + echo "==> [BACKEND] requirements.txt has changed. Reinstalling dependencies..." + pip install -r /home/devbox/freeleaps/apps/requirements.txt + + rm /home/devbox/freeleaps/apps/requirements.txt.bak + + else + # Restore the requirements.txt file + mv /home/devbox/freeleaps/apps/requirements.txt.bak /home/devbox/freeleaps/apps/requirements.txt + fi + touch /home/devbox/.backend_deps_installed echo "==> [BACKEND] Run backend service..." ./start_webapi.sh > /home/devbox/logs/backend.logs 2>&1 & @@ -919,6 +942,20 @@ docker exec -i "$DEVBOX_NAME" bash < [BACKEND] requirements.txt has changed. Reinstalling dependencies..." + pip install -r /home/devbox/freeleaps/apps/requirements.txt + + rm /home/devbox/freeleaps/apps/requirements.txt.bak + else + # Restore the requirements.txt file + mv /home/devbox/freeleaps/apps/requirements.txt.bak /home/devbox/freeleaps/apps/requirements.txt + fi + # Check if the backend service is already running SERVICE_API_ACCESS_PORT=\$(cat /home/devbox/.devbox-backend-port) uvicorn freeleaps.webapi.main:app --reload --host 0.0.0.0 --port \$SERVICE_API_ACCESS_PORT > /home/devbox/logs/backend.logs 2>&1 & @@ -1016,6 +1053,26 @@ docker exec -i "$DEVBOX_NAME" bash < "\$baseline_frontend" echo "==> [FRONTEND] Recorded baseline before compilation: \$baseline_frontend" + # Check if the frontend service is already running according to the package.json and pnpm-lock.yaml files timestamps + if [[ ! -d "node_modules" || "package.json" -nt "node_modules" || "pnpm-lock.yaml" -nt "node_modules" ]]; then + echo "==> Installing/Updating frontend dependencies..." + + # Clean up old dependencies + rm -rf node_modules + + # Install dependencies + pnpm install --prefer-offline || { + echo + echo "============================================================================================" + echo + echo " [ERROR] Failed to install dependencies. Please check the logs for more information." + echo + echo "============================================================================================" + echo + exit 1 + } + fi + # Start the frontend service echo "==> [FRONTEND] Start frontend service..." nohup npm run dev > /home/devbox/logs/frontend.logs 2>&1 &