Legal_Document_Segment_Model / push_to_hf_ssh.sh
hf-upload
Upload inference bundle
0748838
#!/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}"