| #!/bin/bash |
|
|
| HF_TOKEN="${HF_TOKEN:?HF_TOKEN must be set}" |
|
|
| huggingface-cli login --token "$HF_TOKEN" --add-to-git-credential 2>&1 | head -1 |
|
|
| HF_USER="${HF_USER:-$(huggingface-cli whoami 2>/dev/null | head -1 | cut -d' ' -f1)}" |
|
|
| DATASET="${DATASET:-${HF_USER}/mc-server-data}" |
|
|
| init_dataset() { |
| echo "التحقق من Dataset: $DATASET" |
| if huggingface-cli repo create "$DATASET" --type dataset 2>&1; then |
| echo "✅ تم إنشاء Dataset" |
| else |
| echo "⚠️ Dataset موجود مسبقاً" |
| fi |
| } |
|
|
| pull_files() { |
| echo "سحب الملفات من Dataset..." |
| mkdir -p /tmp/sync |
| if huggingface-cli download "$DATASET" --local-dir /tmp/sync --token "$HF_TOKEN" 2>&1; then |
| cp -r /tmp/sync/* /minecraft/ 2>/dev/null || echo "لا توجد ملفات في Dataset" |
| rm -rf /tmp/sync |
| echo "✅ تم سحب الملفات" |
| else |
| echo "ℹ️ Dataset فاضي أو لا يمكن السحب" |
| fi |
| } |
|
|
| push_file() { |
| [ -f "$1" ] && huggingface-cli upload "$DATASET" "$1" --token "$HF_TOKEN" 2>&1 && echo "✅ رفع $1" |
| } |
|
|
| backup_world() { |
| echo "نسخ احتياطي للعالم..." |
| tar czf /tmp/world-backup.tar.gz -C /minecraft world 2>/dev/null |
| if huggingface-cli upload "$DATASET" /tmp/world-backup.tar.gz --token "$HF_TOKEN" 2>&1; then |
| echo "✅ تم نسخ العالم" |
| fi |
| rm -f /tmp/world-backup.tar.gz |
| } |
|
|
| case "${1:-all}" in |
| init) init_dataset ;; |
| pull) pull_files ;; |
| push) shift; push_file "$@" ;; |
| backup) backup_world ;; |
| all) |
| init_dataset |
| pull_files |
| ;; |
| esac |
|
|