File size: 5,288 Bytes
466436b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0b679f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c355051
 
 
 
 
 
 
 
 
 
df06d8a
 
 
 
eac5346
 
df06d8a
 
 
 
c8d8fd0
 
 
 
 
 
 
 
 
 
466436b
0b679f2
466436b
 
 
 
 
 
 
 
 
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#!/bin/bash

# Trigo Hugging Face Space Deployment Script
# This script copies the trigo-web project to the HF Space repo and prepares it for deployment

set -e

echo "🚀 Trigo HF Space Deployment Script"
echo "===================================="
echo ""

# Define paths
PROJECT_ROOT="/home/camus/work/trigo"
TRIGO_WEB="$PROJECT_ROOT/trigo-web"
HF_SPACE="$PROJECT_ROOT/third_party/trigo-hfspace"

# Check if directories exist
if [ ! -d "$TRIGO_WEB" ]; then
    echo "❌ Error: trigo-web directory not found at $TRIGO_WEB"
    exit 1
fi

if [ ! -d "$HF_SPACE" ]; then
    echo "❌ Error: HF Space directory not found at $HF_SPACE"
    exit 1
fi

echo "📂 Project directory: $TRIGO_WEB"
echo "📂 HF Space directory: $HF_SPACE"
echo ""

# Clean up old trigo-web in HF space if it exists
if [ -d "$HF_SPACE/trigo-web" ]; then
    echo "🧹 Cleaning up old trigo-web directory..."
    rm -rf "$HF_SPACE/trigo-web"
fi

# Copy trigo-web to HF space
echo "📦 Copying trigo-web to HF Space repository..."
cp -r "$TRIGO_WEB" "$HF_SPACE/"

# Remove node_modules and dist folders (will be built in Docker)
echo "🧹 Removing node_modules and dist folders (will be rebuilt in Docker)..."
find "$HF_SPACE/trigo-web" -type d -name "node_modules" -exec rm -rf {} + 2>/dev/null || true
find "$HF_SPACE/trigo-web" -type d -name "dist" -exec rm -rf {} + 2>/dev/null || true

# Remove test files
echo "🧹 Removing test files..."
rm -rf "$HF_SPACE/trigo-web/tests" 2>/dev/null || true

# Apply HF Space specific patches
echo "🔧 Applying HF Space patches..."

# Create tsconfig.json for app
echo "   Creating tsconfig.json..."
cat > "$HF_SPACE/trigo-web/app/tsconfig.json" << 'EOF'
{
  "compilerOptions": {
    "target": "ES2020",
    "useDefineForClassFields": true,
    "module": "ESNext",
    "lib": ["ES2020", "DOM", "DOM.Iterable"],
    "skipLibCheck": true,

    /* Bundler mode */
    "moduleResolution": "bundler",
    "allowImportingTsExtensions": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "preserve",

    /* Linting */
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noFallthroughCasesInSwitch": true,

    /* Path aliases */
    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"],
      "@inc/*": ["../inc/*"]
    }
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}
EOF

# Create tsconfig.node.json for app
echo "   Creating tsconfig.node.json..."
cat > "$HF_SPACE/trigo-web/app/tsconfig.node.json" << 'EOF'
{
  "compilerOptions": {
    "composite": true,
    "skipLibCheck": true,
    "module": "ESNext",
    "moduleResolution": "bundler",
    "allowSyntheticDefaultImports": true
  },
  "include": ["vite.config.ts"]
}
EOF

# Patch package.json to skip type checking and add missing dependencies
echo "   Patching app/package.json..."
cd "$HF_SPACE/trigo-web/app"

# Remove vue-tsc from build script
sed -i 's/"build": "vue-tsc --noEmit && vite build"/"build": "vite build"/' package.json

# Add missing dependencies using jq (or sed if jq not available)
if command -v jq &> /dev/null; then
    # Use jq for precise JSON editing
    jq '.dependencies["onnxruntime-web"] = "^1.23.2" | .devDependencies["@types/node"] = "^24.10.1"' package.json > package.json.tmp && mv package.json.tmp package.json
else
    # Fallback: add dependencies manually if not present
    if ! grep -q '"onnxruntime-web"' package.json; then
        sed -i '/"dependencies": {/a \    "onnxruntime-web": "^1.23.2",' package.json
    fi
    if ! grep -q '"@types/node"' package.json; then
        sed -i '/"devDependencies": {/a \    "@types/node": "^24.10.1",' package.json
    fi
fi

cd "$HF_SPACE"

# Remove prepare script from root package.json (husky is not needed in production)
echo "   Removing prepare script from root package.json..."
cd "$HF_SPACE/trigo-web"
if command -v jq &> /dev/null; then
    jq 'del(.scripts.prepare)' package.json > package.json.tmp && mv package.json.tmp package.json
else
    sed -i '/"prepare":/d' package.json
fi
cd "$HF_SPACE"

# Remove VITE_SERVER_URL from .env (production should use window.location.origin)
echo "   Removing VITE_SERVER_URL from .env for production..."
cd "$HF_SPACE/trigo-web"
sed -i '/^VITE_SERVER_URL=/d' .env 2>/dev/null || true
# Set NODE_ENV to production
sed -i 's/^NODE_ENV=development/NODE_ENV=production/' .env 2>/dev/null || true
# Also remove .env.local which has local dev settings
rm -f .env.local backend/.env.local 2>/dev/null || true
cd "$HF_SPACE"

# Patch backend package.json for esbuild output location
echo "   Patching backend package.json for esbuild output..."
cd "$HF_SPACE/trigo-web/backend"
sed -i 's|dist/backend/src/server.js|dist/server.js|g' package.json
cd "$HF_SPACE"

# Patch backend server.ts for esbuild frontend path
echo "   Patching backend server.ts for frontend path..."
sed -i 's|"../../../../app/dist"|"../../app/dist"|' "$HF_SPACE/trigo-web/backend/src/server.ts"

echo ""
echo "✅ Files prepared and patched successfully!"
echo ""
echo "📋 Next steps:"
echo "   1. cd $HF_SPACE"
echo "   2. git add ."
echo "   3. git commit -m 'Deploy Trigo game'"
echo "   4. git push"
echo ""
echo "🌐 After pushing, HF will automatically build and deploy your app."
echo ""