| timestamp() { | |
| date +"%Y-%m-%d_%H-%M-%S" | |
| } | |
| deploy_branch_name() { | |
| echo "deploy/$(timestamp)" | |
| } | |
| if [ -z "$1" ]; then | |
| echo "Usage: $0 <remote> is required" | |
| exit 1 | |
| fi | |
| remote=$1 | |
| # Checkout new deploy branch | |
| echo "Creating new deploy branch at '$(deploy_branch_name)'" | |
| git checkout --orphan "$(deploy_branch_name)" | |
| # Copy Dockerfile and requirements.txt to project root | |
| echo "Copying Dockerfile and requirements.txt to project root" | |
| cp backend/Dockerfile . | |
| cp backend/requirements.txt . | |
| # Create app.py file in the project root | |
| echo "Creating app.py in project root" | |
| echo "from backend.app import app" > app.py | |
| # Fix imports for HF spaces | |
| echo "Fixing backend imports" | |
| find backend -type f -name "*.py" -exec sed -i '' -e 's/^[[:space:]]*from config\./from backend.config./' {} + | |
| find backend -type f -name "*.py" -exec sed -i '' -e 's/^[[:space:]]*from services\./from backend.services./' {} + | |
| find backend -type f -name "*.py" -exec sed -i '' -e 's/^[[:space:]]*from utils\./from backend.utils./' {} + | |
| # HF doesn't like binary files (without gitlfs) | |
| echo "Stripping binary files" | |
| find . -type f \( -name "*.sqlite3" -o -name "*.png" -o -name "*.ico" \) -delete | |
| # Make new commit | |
| echo "Making new commit at $(timestamp)" | |
| git add . | |
| git commit -m "New commit for backend deployment: $(timestamp)" | |
| # Push to HF Spaces main branch | |
| git push -f "$remote" "$(deploy_branch_name):main" | |