File size: 2,675 Bytes
896453f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/bin/bash
#
# Deploy to HuggingFace Spaces using Hub API (bypasses git binary file issues)
#
# Usage:
#   ./scripts/huggingface/deploy-via-api.sh
#

set -e

echo "πŸš€ Deploying to HuggingFace Spaces via Hub API"
echo "=============================================="

# Check for HF token
if [ -z "$HUGGINGFACE_TOKEN" ]; then
    echo "❌ Error: HUGGINGFACE_TOKEN not set"
    echo "   Export it: export HUGGINGFACE_TOKEN=your_token"
    exit 1
fi

# Configuration
SPACE_ID="CommunityOne/open-navigator"
LOCAL_DIR="."

# Files/directories to upload
UPLOAD_PATTERNS=(
    ".huggingface/*"
    "api/*"
    "agents/*"
    "config/*"
    "discovery/*"
    "extraction/*"
    "frontend/dist/*"
    "website/build/*"
    "Dockerfile.huggingface"
    "requirements.txt"
    "README.md"
)

echo "πŸ“¦ Space: $SPACE_ID"
echo ""

# Use huggingface-cli to upload
python << 'PYTHON_SCRIPT'
import os
import sys
from pathlib import Path
from huggingface_hub import HfApi, upload_folder
from loguru import logger

token = os.getenv('HUGGINGFACE_TOKEN')
space_id = os.getenv('SPACE_ID', 'CommunityOne/open-navigator')

if not token:
    logger.error("HUGGINGFACE_TOKEN not set")
    sys.exit(1)

logger.info(f"Uploading to Space: {space_id}")

api = HfApi(token=token)

# Upload entire directory but ignore certain patterns
ignore_patterns = [
    ".git/*",
    ".git",
    ".venv/*",
    ".venv",
    ".venv-intel/*",
    ".venv-intel",
    "venv/*",
    "venv",
    "node_modules/*",
    "**/node_modules/*",
    "node_modules",
    "data/*",  # Don't upload data files
    "data/gold_old/*",
    "logs/*",
    ".env",
    ".env.*",
    "__pycache__/*",
    "**/__pycache__/*",
    "*.pyc",
    ".vscode/*",
    ".idea/*",
    "*.log",
    ".cache/*",
    "**/.cache/*",
    "website/node_modules/*",
    "frontend/node_modules/*",
    "*.swp",
    "*.swo",
    "*~",
    ".DS_Store",
]

logger.info("Uploading files...")
logger.info(f"Ignoring: {', '.join(ignore_patterns[:5])}...")

try:
    upload_folder(
        folder_path=".",
        repo_id=space_id,
        repo_type="space",
        token=token,
        ignore_patterns=ignore_patterns,
        commit_message="Deploy updated application via Hub API"
    )
    
    logger.success(f"βœ… Successfully deployed to {space_id}")
    logger.info(f"View at: https://huggingface.co/spaces/{space_id}")
    
except Exception as e:
    logger.error(f"❌ Deployment failed: {e}")
    import traceback
    traceback.print_exc()
    sys.exit(1)
PYTHON_SCRIPT

echo ""
echo "βœ… Deployment complete!"
echo "🌐 View your Space at: https://www.communityone.com"
echo "πŸ“Š Check build logs at: https://huggingface.co/spaces/$SPACE_ID"