|
|
#!/bin/bash |
|
|
set -e |
|
|
|
|
|
|
|
|
SPACE_NAME="hpmor" |
|
|
HF_USERNAME="deenaik" |
|
|
|
|
|
echo "π Deploying HPMOR Q&A to HuggingFace Spaces..." |
|
|
echo "" |
|
|
|
|
|
|
|
|
echo "π Checking HuggingFace authentication..." |
|
|
|
|
|
|
|
|
if command -v hf &> /dev/null; then |
|
|
HF_CMD="hf" |
|
|
elif command -v huggingface-cli &> /dev/null; then |
|
|
HF_CMD="huggingface-cli" |
|
|
else |
|
|
echo "β HuggingFace CLI not found." |
|
|
echo "Please install: pip install huggingface_hub[cli]" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
AUTH_CHECK_OUTPUT=$($HF_CMD auth whoami 2>&1) |
|
|
if [ $? -ne 0 ]; then |
|
|
echo "β Not logged in to HuggingFace." |
|
|
echo "Please run: $HF_CMD auth login" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
CURRENT_USER=$(echo "$AUTH_CHECK_OUTPUT" | head -n 1) |
|
|
if [ -z "$CURRENT_USER" ]; then |
|
|
CURRENT_USER="(authenticated)" |
|
|
fi |
|
|
echo "β
Logged in as: $CURRENT_USER" |
|
|
echo "" |
|
|
|
|
|
|
|
|
read -p "Deploy to space '${HF_USERNAME}/${SPACE_NAME}'? (y/n) " -n 1 -r |
|
|
echo |
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then |
|
|
echo "β Deployment cancelled" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
echo "π¦ Creating/checking HuggingFace Space..." |
|
|
$HF_CMD space create $SPACE_NAME --sdk gradio 2>/dev/null || echo " (Space may already exist - continuing...)" |
|
|
echo "" |
|
|
|
|
|
|
|
|
echo "π Preparing deployment files..." |
|
|
cp README_HF.md README.md |
|
|
cp requirements_hf.txt requirements.txt |
|
|
echo " β Copied README_HF.md β README.md" |
|
|
echo " β Copied requirements_hf.txt β requirements.txt" |
|
|
echo "" |
|
|
|
|
|
|
|
|
if [ ! -d .git ]; then |
|
|
echo "π§ Initializing git repository..." |
|
|
git init |
|
|
fi |
|
|
|
|
|
|
|
|
echo "π Setting up HuggingFace remote..." |
|
|
git remote remove space 2>/dev/null || true |
|
|
git remote add space https://huggingface.co/spaces/${HF_USERNAME}/${SPACE_NAME} |
|
|
echo "" |
|
|
|
|
|
|
|
|
echo "π¦ Staging files for deployment..." |
|
|
git add app.py README.md requirements.txt src/ data/ .gitignore .env.example |
|
|
echo " Files staged:" |
|
|
git status --short |
|
|
echo "" |
|
|
|
|
|
|
|
|
echo "πΎ Creating commit..." |
|
|
git commit -m "Deploy: HPMOR Q&A chatbot - $(date +%Y-%m-%d)" || { |
|
|
echo " (No new changes to commit - using existing commit)" |
|
|
} |
|
|
echo "" |
|
|
|
|
|
|
|
|
echo "π Pushing to HuggingFace Spaces..." |
|
|
echo " This may take a few minutes..." |
|
|
git push --force space main |
|
|
|
|
|
echo "" |
|
|
echo "β
Deployment complete!" |
|
|
echo "" |
|
|
echo "π Your Space: https://huggingface.co/spaces/${HF_USERNAME}/${SPACE_NAME}" |
|
|
echo "" |
|
|
echo "β οΈ IMPORTANT: Don't forget to set your GROQ_API_KEY!" |
|
|
echo " 1. Go to: https://huggingface.co/spaces/${HF_USERNAME}/${SPACE_NAME}/settings" |
|
|
echo " 2. Navigate to 'Repository secrets'" |
|
|
echo " 3. Add secret: GROQ_API_KEY = your_groq_api_key" |
|
|
echo "" |
|
|
echo "Or run:" |
|
|
echo " ${HF_CMD} space secret set GROQ_API_KEY <your_key> --space-id ${HF_USERNAME}/${SPACE_NAME}" |
|
|
echo "" |
|
|
echo "π Monitor build progress:" |
|
|
echo " https://huggingface.co/spaces/${HF_USERNAME}/${SPACE_NAME}" |
|
|
|