Spaces:
Sleeping
Sleeping
| import { execSync } from 'child_process'; | |
| import fs from 'fs'; | |
| import path from 'path'; | |
| const REPO_ID = 'Jaimodiji/colorrm-test-storage'; | |
| const TOKEN = process.env.HF_TOKEN; | |
| const LOCAL_STATE_DIR = '.wrangler/state/v3'; | |
| async function restore() { | |
| console.log(`[${new Date().toISOString()}] Checking for existing backup on HF Dataset...`); | |
| if (!TOKEN) { | |
| console.error('HF_TOKEN environment variable is not set. Skipping restore.'); | |
| return; | |
| } | |
| try { | |
| const tempRestoreDir = '.wrangler_restore_temp'; | |
| if (!fs.existsSync('.wrangler/state')) { | |
| fs.mkdirSync('.wrangler/state', { recursive: true }); | |
| } | |
| const command = `hf download ${REPO_ID} --include ".wrangler_backup/*" --local-dir ${tempRestoreDir} --repo-type dataset --token ${TOKEN} --quiet`; | |
| console.log(`[${new Date().toISOString()}] Executing download command...`); | |
| let success = false; | |
| for (let i = 1; i <= 3; i++) { | |
| try { | |
| execSync(command, { stdio: 'inherit' }); | |
| success = true; | |
| break; | |
| } catch (e) { | |
| console.warn(`[${new Date().toISOString()}] Download attempt ${i} failed: ${e.message}`); | |
| if (i < 3) { | |
| console.log(`[${new Date().toISOString()}] Retrying in 5 seconds...`); | |
| // Synchronous sleep | |
| const start = Date.now(); | |
| while (Date.now() - start < 5000) {} | |
| } else { | |
| console.error(`[${new Date().toISOString()}] All download attempts failed.`); | |
| throw e; | |
| } | |
| } | |
| } | |
| const actualRestoredDir = path.join(tempRestoreDir, '.wrangler_backup'); | |
| if (fs.existsSync(actualRestoredDir)) { | |
| console.log(`[${new Date().toISOString()}] Backup found. Restoring to ${LOCAL_STATE_DIR}...`); | |
| if (fs.existsSync(LOCAL_STATE_DIR)) { | |
| const timestamp = Date.now(); | |
| fs.renameSync(LOCAL_STATE_DIR, `${LOCAL_STATE_DIR}_old_${timestamp}`); | |
| } | |
| fs.renameSync(actualRestoredDir, LOCAL_STATE_DIR); | |
| try { fs.rmSync(tempRestoreDir, { recursive: true, force: true }); } catch(e) {} | |
| console.log(`[${new Date().toISOString()}] Restore complete!`); | |
| } else { | |
| console.log(`[${new Date().toISOString()}] No backup found in dataset. Starting fresh.`); | |
| } | |
| } catch (error) { | |
| console.error(`[${new Date().toISOString()}] Restore failed (possibly no backup exists):`, error.message); | |
| } | |
| } | |
| restore(); |