#!/bin/bash timestamp() { date +"%Y-%m-%d_%H-%M-%S" } deploy_branch_name() { echo "deploy/$(timestamp)" } if [ -z "$1" ]; then echo "Usage: $0 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"