#!/usr/bin/env bash set -euo pipefail # Usage: # ./scripts/upload_to_modelscope.sh [upload_dir] [mode] [commit_message] # # Examples: # ./scripts/upload_to_modelscope.sh your_user/your_repo ms-xxxx # ./scripts/upload_to_modelscope.sh your_user/your_repo ms-xxxx modelscope_upload proxy # # mode: # direct (default): unset proxy vars for direct connection # proxy: keep current proxy environment REPO_ID="${1:-}" TOKEN="${2:-}" UPLOAD_DIR_ARG="${3:-modelscope_upload}" MODE="${4:-direct}" COMMIT_MESSAGE="${5:-Upload model artifacts}" if [[ -z "${REPO_ID}" || -z "${TOKEN}" ]]; then echo "Usage: $0 [upload_dir] [mode] [commit_message]" exit 1 fi SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" UPLOAD_DIR="${UPLOAD_DIR_ARG}" if [[ "${UPLOAD_DIR}" != /* ]]; then UPLOAD_DIR="${ROOT_DIR}/${UPLOAD_DIR}" fi if [[ ! -d "${UPLOAD_DIR}" ]]; then echo "Upload directory does not exist: ${UPLOAD_DIR}" exit 2 fi MODELSCOPE_BIN="${ROOT_DIR}/.venv/bin/modelscope" if [[ ! -x "${MODELSCOPE_BIN}" ]]; then echo "modelscope CLI not found at ${MODELSCOPE_BIN}" exit 3 fi if [[ "${MODE}" == "direct" ]]; then RUN_CMD=(env -u HTTP_PROXY -u HTTPS_PROXY -u ALL_PROXY -u NO_PROXY "${MODELSCOPE_BIN}") elif [[ "${MODE}" == "proxy" ]]; then RUN_CMD=("${MODELSCOPE_BIN}") else echo "Unsupported mode: ${MODE} (use direct|proxy)" exit 4 fi "${RUN_CMD[@]}" login --token "${TOKEN}" "${RUN_CMD[@]}" upload "${REPO_ID}" "${UPLOAD_DIR}" . \ --repo-type model \ --commit-message "${COMMIT_MESSAGE}" echo "Upload finished: ${REPO_ID}"