anhtld commited on
Commit
b2f6551
·
verified ·
1 Parent(s): fe15430

auto-sync 2026-07-04T05:35:30Z workspace (part 3)

Browse files
Files changed (1) hide show
  1. workspace/scripts/hf_push_once.sh +49 -0
workspace/scripts/hf_push_once.sh CHANGED
@@ -12,6 +12,8 @@ HF_SYNC_PRIVATE="${HF_SYNC_PRIVATE:-0}"
12
  HF_SYNC_LOG_DIR="${HF_SYNC_LOG_DIR:-$PROJECT_DIR/outputs/hf_sync}"
13
  HF_SYNC_COMMIT_PREFIX="${HF_SYNC_COMMIT_PREFIX:-auto-sync}"
14
  HF_SYNC_AUTH_TIMEOUT="${HF_SYNC_AUTH_TIMEOUT:-60}"
 
 
15
 
16
  mkdir -p "$HF_SYNC_LOG_DIR"
17
 
@@ -104,6 +106,52 @@ upload_root() {
104
  "${exclude_args[@]}"
105
  }
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  write_manifest() {
108
  python3 - "$HF_SYNC_LOG_DIR/last_manifest.json" "$PROJECT_DIR" "$SCRATCH_ROOT" "$HF_REPO_ID" <<'PY'
109
  from __future__ import annotations
@@ -185,4 +233,5 @@ if [[ -n "${HF_SYNC_EXTRA_ROOTS:-}" ]]; then
185
  fi
186
 
187
  upload_root "$HF_SYNC_LOG_DIR/last_manifest.json" "manifests/hf_sync_last_manifest.json"
 
188
  log "sync complete"
 
12
  HF_SYNC_LOG_DIR="${HF_SYNC_LOG_DIR:-$PROJECT_DIR/outputs/hf_sync}"
13
  HF_SYNC_COMMIT_PREFIX="${HF_SYNC_COMMIT_PREFIX:-auto-sync}"
14
  HF_SYNC_AUTH_TIMEOUT="${HF_SYNC_AUTH_TIMEOUT:-60}"
15
+ HF_SYNC_CLEAN_REMOTE_MARKDOWN="${HF_SYNC_CLEAN_REMOTE_MARKDOWN:-1}"
16
+ HF_SYNC_REMOTE_MARKDOWN_KEEP="${HF_SYNC_REMOTE_MARKDOWN_KEEP:-workspace/README.md}"
17
 
18
  mkdir -p "$HF_SYNC_LOG_DIR"
19
 
 
106
  "${exclude_args[@]}"
107
  }
108
 
109
+ cleanup_remote_markdown() {
110
+ if [[ "$HF_SYNC_CLEAN_REMOTE_MARKDOWN" != "1" ]]; then
111
+ log "skip remote Markdown cleanup: HF_SYNC_CLEAN_REMOTE_MARKDOWN=$HF_SYNC_CLEAN_REMOTE_MARKDOWN"
112
+ return 0
113
+ fi
114
+ if [[ "$HF_SYNC_DRY_RUN" == "1" ]]; then
115
+ log "dry-run would remove remote Markdown except: $HF_SYNC_REMOTE_MARKDOWN_KEEP"
116
+ return 0
117
+ fi
118
+ log "cleanup remote Markdown; keep=$HF_SYNC_REMOTE_MARKDOWN_KEEP"
119
+ python3 - "$HF_REPO_ID" "$HF_REPO_TYPE" "$HF_SYNC_REMOTE_MARKDOWN_KEEP" "$HF_SYNC_COMMIT_PREFIX" <<'PY'
120
+ from __future__ import annotations
121
+
122
+ import os
123
+ import sys
124
+ from datetime import datetime, timezone
125
+
126
+ from huggingface_hub import HfApi
127
+
128
+ repo_id = sys.argv[1]
129
+ repo_type = sys.argv[2]
130
+ keep = {item.strip("/") for item in sys.argv[3].split(":") if item.strip()}
131
+ commit_prefix = sys.argv[4]
132
+
133
+ api = HfApi(token=os.environ.get("HF_TOKEN") or None)
134
+ paths = api.list_repo_files(repo_id, repo_type=repo_type)
135
+ to_delete = sorted(path for path in paths if path.endswith(".md") and path not in keep)
136
+ if not to_delete:
137
+ print("remote_markdown_cleanup: nothing_to_delete")
138
+ raise SystemExit(0)
139
+
140
+ stamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
141
+ info = api.delete_files(
142
+ repo_id,
143
+ to_delete,
144
+ repo_type=repo_type,
145
+ commit_message=f"{commit_prefix} {stamp} cleanup stale markdown",
146
+ commit_description=(
147
+ "Keep the configured README-only Markdown contract on the Hub. "
148
+ f"Kept paths: {', '.join(sorted(keep)) or '(none)'}."
149
+ ),
150
+ )
151
+ print(f"remote_markdown_cleanup: deleted={len(to_delete)} commit={info.commit_url}")
152
+ PY
153
+ }
154
+
155
  write_manifest() {
156
  python3 - "$HF_SYNC_LOG_DIR/last_manifest.json" "$PROJECT_DIR" "$SCRATCH_ROOT" "$HF_REPO_ID" <<'PY'
157
  from __future__ import annotations
 
233
  fi
234
 
235
  upload_root "$HF_SYNC_LOG_DIR/last_manifest.json" "manifests/hf_sync_last_manifest.json"
236
+ cleanup_remote_markdown
237
  log "sync complete"