File size: 1,929 Bytes
0748838
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/usr/bin/env bash
set -euo pipefail

REPO_ID="${1:-}"
if [[ -z "$REPO_ID" ]]; then
  echo "Usage: $0 <USER_OR_ORG>/<REPO_NAME>"
  exit 2
fi

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

SSH_KEY_PATH="${SSH_KEY_PATH:-$HOME/.ssh/hf_codex_upload}"
SSH_CMD="ssh -i ${SSH_KEY_PATH} -o IdentitiesOnly=yes -o StrictHostKeyChecking=no"
if [[ -n "${TMP_DIR:-}" ]]; then
  WORK_DIR="$TMP_DIR"
  mkdir -p "$WORK_DIR"
else
  WORK_DIR="$(mktemp -d /tmp/hf_model_repo_XXXXXX)"
fi
REPO_DIR="${WORK_DIR}/repo"

mkdir -p "$(dirname "$SSH_KEY_PATH")"
chmod 700 "$(dirname "$SSH_KEY_PATH")"

if [[ ! -f "$SSH_KEY_PATH" ]]; then
  ssh-keygen -t ed25519 -f "$SSH_KEY_PATH" -N "" -C "hf-upload" >/dev/null
  echo "[INFO] Generated SSH key: $SSH_KEY_PATH"
fi

echo ""
echo "1) Add this public key to https://huggingface.co/settings/keys :"
cat "${SSH_KEY_PATH}.pub"
echo ""
echo "2) After adding the key, run this script again to push."
echo ""

AUTH_MSG="$(ssh -o BatchMode=yes -i "$SSH_KEY_PATH" -o IdentitiesOnly=yes -T git@hf.co 2>&1 || true)"
if echo "$AUTH_MSG" | grep -q "Hi anonymous"; then
  echo "[STOP] SSH key not linked yet. Add the key in Hugging Face settings, then rerun:"
  echo "  $0 $REPO_ID"
  exit 1
fi

rm -rf "$REPO_DIR"
GIT_SSH_COMMAND="$SSH_CMD" git clone "git@hf.co:${REPO_ID}" "$REPO_DIR" >/dev/null
rsync -a --delete \
  --exclude '.git/' \
  --exclude 'output/**' \
  --exclude '**/__pycache__/**' \
  --exclude 'assets/best_model.pt' \
  --exclude 'assets/best_model.pt.part-*' \
  "$SCRIPT_DIR/" "$REPO_DIR/"

pushd "$REPO_DIR" >/dev/null
git config user.name "${GIT_AUTHOR_NAME:-hf-upload}"
git config user.email "${GIT_AUTHOR_EMAIL:-hf-upload@local}"
git add -A
if ! git diff --cached --quiet; then
  git commit -m "Upload inference bundle" >/dev/null
fi

GIT_SSH_COMMAND="$SSH_CMD" \
  GIT_TERMINAL_PROMPT=0 \
  git push -u origin main

popd >/dev/null
echo "[DONE] https://huggingface.co/${REPO_ID}"