mirror of
https://github.com/andrey271192/amnezia_web-PRO.git
synced 2026-09-20 14:42:00 +00:00
fix(install): auth tarball download with GITHUB_TOKEN
Private repos return 404 on archive/refs/heads/<branch>.tar.gz without Authorization. Use api.github.com/.../tarball/<ref> when GITHUB_TOKEN/GH_TOKEN is set; tolerate the SHA-suffixed top dir. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -55,19 +55,38 @@ if [[ "${SKIP_DOWNLOAD:-}" != "1" ]]; then
|
|||||||
--retry-connrefused
|
--retry-connrefused
|
||||||
)
|
)
|
||||||
if [[ "${INSTALL_SCRIPT_VERBOSE:-}" == "1" ]]; then CURL_OPTS+=(--progress-bar); fi
|
if [[ "${INSTALL_SCRIPT_VERBOSE:-}" == "1" ]]; then CURL_OPTS+=(--progress-bar); fi
|
||||||
|
# Поддержка GITHUB_TOKEN / GH_TOKEN: для приватных репозиториев публичный
|
||||||
|
# URL /archive/refs/heads/<branch>.tar.gz отдаёт 404 без авторизации.
|
||||||
|
GH_AUTH_TOKEN="${GITHUB_TOKEN:-${GH_TOKEN:-}}"
|
||||||
|
if [[ -n "${GH_AUTH_TOKEN}" ]]; then
|
||||||
|
CURL_OPTS+=(-H "Authorization: Bearer ${GH_AUTH_TOKEN}")
|
||||||
|
CURL_OPTS+=(-H "X-GitHub-Api-Version: 2022-11-28")
|
||||||
|
fi
|
||||||
CURL_URL="${GITHUB_REPO_URL_OVERRIDE:-}"
|
CURL_URL="${GITHUB_REPO_URL_OVERRIDE:-}"
|
||||||
if [[ -z "${CURL_URL}" ]]; then
|
if [[ -z "${CURL_URL}" ]]; then
|
||||||
CURL_URL="https://github.com/${GITHUB_REPO}/archive/refs/heads/${BRANCH}.tar.gz"
|
if [[ -n "${GH_AUTH_TOKEN}" ]]; then
|
||||||
|
# API-tarball работает и для приватных репо, и для публичных.
|
||||||
|
CURL_URL="https://api.github.com/repos/${GITHUB_REPO}/tarball/${BRANCH}"
|
||||||
|
else
|
||||||
|
CURL_URL="https://github.com/${GITHUB_REPO}/archive/refs/heads/${BRANCH}.tar.gz"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
if ! curl "${CURL_OPTS[@]}" "${CURL_URL}" | tar xz -C "${TMP}"; then
|
if ! curl "${CURL_OPTS[@]}" "${CURL_URL}" | tar xz -C "${TMP}"; then
|
||||||
echo "Ошибка: не удалось скачать или распаковать архив (${CURL_URL})."
|
echo "Ошибка: не удалось скачать или распаковать архив (${CURL_URL})."
|
||||||
echo "Подсказка: проверьте ping/curl до github.com, при необходимости export GITHUB_REPO_URL_OVERRIDE='…' или INSTALL_SCRIPT_VERBOSE=1."
|
echo "Подсказка: проверьте токен (для приватного репо нужен GITHUB_TOKEN/GH_TOKEN с правом Contents:Read), ping/curl до github.com, при необходимости export GITHUB_REPO_URL_OVERRIDE='…' или INSTALL_SCRIPT_VERBOSE=1."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "→ Перенос распакованного дерева в ${INSTALL_DIR}…"
|
echo "→ Перенос распакованного дерева в ${INSTALL_DIR}…"
|
||||||
|
# API-tarball распаковывается в каталог вида `<owner>-<repo>-<sha7>`,
|
||||||
|
# archive/refs/heads — в `<repo>-<branch>`. Поэтому берём первый каталог TMP.
|
||||||
|
__extracted_dir="$(find "${TMP}" -mindepth 1 -maxdepth 1 -type d | head -n1)"
|
||||||
|
if [[ -z "${__extracted_dir}" ]]; then
|
||||||
|
echo "Ошибка: распакованный архив пуст (${CURL_URL})."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
rm -rf "${INSTALL_DIR}"
|
rm -rf "${INSTALL_DIR}"
|
||||||
mkdir -p "$(dirname "${INSTALL_DIR}")"
|
mkdir -p "$(dirname "${INSTALL_DIR}")"
|
||||||
mv "${TMP}/${REPO_SLUG}-${BRANCH}" "${INSTALL_DIR}"
|
mv "${__extracted_dir}" "${INSTALL_DIR}"
|
||||||
TMP=""
|
TMP=""
|
||||||
echo "→ Источники на месте."
|
echo "→ Источники на месте."
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user