mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
update binary addons scripts: implement GITHUB_API_TOKEN alternative
When environment variable GITHUB_API_TOKEN like in ${HOME}/.${DISTRO,,}/options is assigned the script will fetch all data direct from Github instead clone every single package.
This commit is contained in:
parent
18488b0f0e
commit
bec6d17054
@ -68,10 +68,33 @@ fi
|
|||||||
|
|
||||||
. "${MY_DIR}/update_common_functions"
|
. "${MY_DIR}/update_common_functions"
|
||||||
|
|
||||||
git_clone https://github.com/xbmc/xbmc ${KODI_DIR} ${KODI_BRANCH}
|
get_gh_token
|
||||||
|
|
||||||
|
if [ -z "${GITHUB_API_TOKEN}" ]; then
|
||||||
|
git_clone https://github.com/xbmc/xbmc ${KODI_DIR} ${KODI_BRANCH}
|
||||||
|
ADDONS_REPO_LOCATION="${KODI_DIR}/cmake/addons/bootstrap/repositories"
|
||||||
|
else
|
||||||
|
# check if depends are available
|
||||||
|
command -v curl >/dev/null 2>&1 || die "please install curl"
|
||||||
|
command -v jq >/dev/null 2>&1 || die "please install jq"
|
||||||
|
|
||||||
|
TMP_REPO_DIR="${TMPDIR}/bootstrap-repos"
|
||||||
|
|
||||||
|
curl -s -L -H "Authorization: token ${GITHUB_API_TOKEN}" \
|
||||||
|
"https://api.github.com/repos/xbmc/xbmc/contents/cmake/addons/bootstrap/repositories?ref=${KODI_BRANCH}" | awk \
|
||||||
|
'/download_url/ { gsub("\"|,", "", $2); system("mkdir -p '${TMP_REPO_DIR}'; (cd '${TMP_REPO_DIR}'; curl -O "$2")"); }' \
|
||||||
|
2>/dev/null
|
||||||
|
ADDONS_REPO_LOCATION=${TMP_REPO_DIR}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! ls ${ADDONS_REPO_LOCATION}/*-addons.txt &> /dev/null; then
|
||||||
|
echo "No binary addon repo description found, nothing to do!"
|
||||||
|
echo "Path searched: ${ADDONS_REPO_LOCATION}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# addons
|
# addons
|
||||||
for addontxt in $KODI_DIR/cmake/addons/bootstrap/repositories/*-addons.txt ; do
|
for addontxt in ${ADDONS_REPO_LOCATION}/*-addons.txt ; do
|
||||||
ADDONS=$(cat $addontxt | awk '{print $1}')
|
ADDONS=$(cat $addontxt | awk '{print $1}')
|
||||||
ADDONS_GIT_DIR="${ADDONS}.git"
|
ADDONS_GIT_DIR="${ADDONS}.git"
|
||||||
ADDONS_GIT_REPO=$(cat $addontxt | awk '{print $2}')
|
ADDONS_GIT_REPO=$(cat $addontxt | awk '{print $2}')
|
||||||
@ -99,16 +122,26 @@ for addontxt in $KODI_DIR/cmake/addons/bootstrap/repositories/*-addons.txt ; do
|
|||||||
# If different, ignore the addon and process it later as an "unofficial" addon
|
# If different, ignore the addon and process it later as an "unofficial" addon
|
||||||
validate_pkg_url "${ADDON}" "${GIT_REPO}" || continue
|
validate_pkg_url "${ADDON}" "${GIT_REPO}" || continue
|
||||||
|
|
||||||
git_clone ${GIT_REPO} ${GIT_DIR} ${GIT_BRANCH}
|
|
||||||
|
|
||||||
NO_TAG=""
|
NO_TAG=""
|
||||||
NEW_VERSION=$(resolve_tag_in_branch ${GIT_DIR} ${GIT_BRANCH})
|
if [ -z "${GITHUB_API_TOKEN}" ]; then
|
||||||
|
git_clone ${GIT_REPO} ${GIT_DIR} ${GIT_BRANCH}
|
||||||
|
PARAMS="resolve_tag_in_branch ${GIT_DIR} ${GIT_BRANCH}"
|
||||||
|
else
|
||||||
|
PARAMS="resolve_tag_on_gh ${GIT_REPO} ${GIT_BRANCH}"
|
||||||
|
fi
|
||||||
|
NEW_VERSION=$(${PARAMS})
|
||||||
|
|
||||||
if [ -z "${NEW_VERSION}" ]; then
|
if [ -z "${NEW_VERSION}" ]; then
|
||||||
NO_TAG="yes"
|
NO_TAG="yes"
|
||||||
echo "========================================================================"
|
echo "========================================================================"
|
||||||
msg_warn "WARNING: no tag found for addon ${ADDON}, falling back to HEAD"
|
msg_warn "WARNING: no tag found for addon ${ADDON}, falling back to HEAD"
|
||||||
echo "========================================================================"
|
echo "========================================================================"
|
||||||
NEW_VERSION=$(resolve_hash_in_branch "${GIT_DIR}" "${GIT_BRANCH}")
|
if [ -z "${GITHUB_API_TOKEN}" ]; then
|
||||||
|
PARAMS="resolve_hash_in_branch ${GIT_DIR} ${GIT_BRANCH}"
|
||||||
|
else
|
||||||
|
PARAMS="resolve_hash_on_gh ${GIT_REPO} ${GIT_BRANCH}"
|
||||||
|
fi
|
||||||
|
NEW_VERSION=$(${PARAMS})
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Resolved version for ${ADDON}: ${GIT_BRANCH} => ${NEW_VERSION}"
|
echo "Resolved version for ${ADDON}: ${GIT_BRANCH} => ${NEW_VERSION}"
|
||||||
@ -125,7 +158,7 @@ for addontxt in $KODI_DIR/cmake/addons/bootstrap/repositories/*-addons.txt ; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
||||||
rm -rf "${GIT_DIR}"
|
[ -d "${GIT_DIR}" ] && rm -rf "${GIT_DIR}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "[mkpkg] Skipped $ADDON"
|
echo "[mkpkg] Skipped $ADDON"
|
||||||
@ -154,11 +187,18 @@ for ADDON in $(ls -1 "${ROOT}/packages/mediacenter/kodi-binary-addons"); do
|
|||||||
GIT_DIR="${ADDON}.git"
|
GIT_DIR="${ADDON}.git"
|
||||||
GIT_REPO="$(geturl "${ADDON}")" || continue
|
GIT_REPO="$(geturl "${ADDON}")" || continue
|
||||||
|
|
||||||
|
if [ -z "${GITHUB_API_TOKEN}" ]; then
|
||||||
git_clone ${GIT_REPO} ${GIT_DIR}
|
git_clone ${GIT_REPO} ${GIT_DIR}
|
||||||
|
RESOLVE_UNOFFICIAL_BRANCH="resolve_hash_in_branch ${ADDON}.git ${UNOFFICIAL_ADDON_BRANCH}"
|
||||||
|
RESOLVE_HEAD="resolve_hash_in_branch ${ADDON}.git HEAD"
|
||||||
|
else
|
||||||
|
RESOLVE_UNOFFICIAL_BRANCH="resolve_hash_on_gh ${GIT_REPO%.git} ${UNOFFICIAL_ADDON_BRANCH}"
|
||||||
|
RESOLVE_HEAD="resolve_hash_on_gh ${GIT_REPO%.git} HEAD"
|
||||||
|
fi
|
||||||
|
|
||||||
if RESOLVED_HASH=$(resolve_hash_in_branch ${ADDON}.git ${UNOFFICIAL_ADDON_BRANCH}); then
|
if RESOLVED_HASH=$(${RESOLVE_UNOFFICIAL_BRANCH}); then
|
||||||
echo "Resolved hash for ${ADDON}: ${UNOFFICIAL_ADDON_BRANCH} => ${RESOLVED_HASH}"
|
echo "Resolved hash for ${ADDON}: ${UNOFFICIAL_ADDON_BRANCH} => ${RESOLVED_HASH}"
|
||||||
elif RESOLVED_HASH=$(resolve_hash_in_branch ${ADDON}.git HEAD); then
|
elif RESOLVED_HASH=$(${RESOLVE_HEAD}); then
|
||||||
echo "Resolved hash for ${ADDON}: HEAD => ${RESOLVED_HASH}"
|
echo "Resolved hash for ${ADDON}: HEAD => ${RESOLVED_HASH}"
|
||||||
else
|
else
|
||||||
msg_warn "WARNING: Could not resolve hash for ${ADDON}"
|
msg_warn "WARNING: Could not resolve hash for ${ADDON}"
|
||||||
@ -173,8 +213,10 @@ for ADDON in $(ls -1 "${ROOT}/packages/mediacenter/kodi-binary-addons"); do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
||||||
rm -rf ${GIT_DIR}
|
[ -d "${GIT_DIR}" ] && rm -rf ${GIT_DIR}
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
rm -rf "${TMPDIR}"
|
rm -rf "${TMPDIR}"
|
||||||
|
|
||||||
|
[ -d "${TMP_REPO_DIR}" ] && rm -rf "${TMP_REPO_DIR}"
|
||||||
|
@ -60,6 +60,12 @@ resolve_hash_in_branch() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resolve_hash_on_gh() {
|
||||||
|
curl -s -L -H "Authorization: token ${GITHUB_API_TOKEN}" \
|
||||||
|
-H "Accept: application/vnd.github.VERSION.sha" \
|
||||||
|
"${1/*github.com/https:\/\/api.github.com\/repos}/commits/$2"
|
||||||
|
}
|
||||||
|
|
||||||
resolve_tag_in_branch() {
|
resolve_tag_in_branch() {
|
||||||
local tag
|
local tag
|
||||||
if [ -d "$1" ] ; then
|
if [ -d "$1" ] ; then
|
||||||
@ -75,6 +81,22 @@ resolve_tag_in_branch() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resolve_tag_on_gh() {
|
||||||
|
local tag
|
||||||
|
|
||||||
|
tag=$(curl -s -L -H "Authorization: token ${GITHUB_API_TOKEN}" \
|
||||||
|
"${1/*github.com/https:\/\/api.github.com\/repos}/releases" | \
|
||||||
|
jq -r '[.[] | select(.target_commitish == "'$2'")][0].tag_name | select (.!=null)')
|
||||||
|
|
||||||
|
if [ -z "$tag" ] ; then
|
||||||
|
tag=$(curl -s -L -H "Authorization: token ${GITHUB_API_TOKEN}" \
|
||||||
|
"${1/*github.com/https:\/\/api.github.com\/repos}/tags" | \
|
||||||
|
jq -r '[.[] | select(.name | contains("'$2'"))][0].name | select (.!=null)')
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$tag"
|
||||||
|
}
|
||||||
|
|
||||||
check_package_excluded() {
|
check_package_excluded() {
|
||||||
local package="$1" local packages_to_exclude="$2" pkg
|
local package="$1" local packages_to_exclude="$2" pkg
|
||||||
[ -z "${package}" -o -z "${packages_to_exclude}" ] && return 1
|
[ -z "${package}" -o -z "${packages_to_exclude}" ] && return 1
|
||||||
@ -184,4 +206,9 @@ validate_pkg_url() {
|
|||||||
[ "${url1}" = "${url2}" ] && return 0 || return 1
|
[ "${url1}" = "${url2}" ] && return 0 || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Get user Github token if available
|
||||||
|
get_gh_token() {
|
||||||
|
if [ -z "${GITHUB_API_TOKEN}" ]; then
|
||||||
|
GITHUB_API_TOKEN=$(get_pkg_var "" GITHUB_API_TOKEN)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
@ -73,6 +73,14 @@ mkdir -p "${TMPDIR}"
|
|||||||
|
|
||||||
. "${MY_DIR}/update_common_functions"
|
. "${MY_DIR}/update_common_functions"
|
||||||
|
|
||||||
|
get_gh_token
|
||||||
|
|
||||||
|
# check if depends are available
|
||||||
|
if [ -n "${GITHUB_API_TOKEN}" ]; then
|
||||||
|
command -v curl >/dev/null 2>&1 || die "please install curl"
|
||||||
|
command -v jq >/dev/null 2>&1 || die "please install jq"
|
||||||
|
fi
|
||||||
|
|
||||||
ADDONS="game-binary-addons"
|
ADDONS="game-binary-addons"
|
||||||
ADDONS_DIR="${ADDONS}.git"
|
ADDONS_DIR="${ADDONS}.git"
|
||||||
ADDONS_REPO="https://github.com/kodi-game/repo-binary-addons.git"
|
ADDONS_REPO="https://github.com/kodi-game/repo-binary-addons.git"
|
||||||
@ -114,14 +122,23 @@ for addon in ${ADDONS_DIR}/*.*/ ; do
|
|||||||
NO_TAG=""
|
NO_TAG=""
|
||||||
CHECK_RETRO=""
|
CHECK_RETRO=""
|
||||||
|
|
||||||
|
if [ -z "$GITHUB_API_TOKEN" ]; then
|
||||||
git_clone "${GAME_GIT_REPO}" "${GAME_GIT_DIR}"
|
git_clone "${GAME_GIT_REPO}" "${GAME_GIT_DIR}"
|
||||||
GAME_NEW_VERSION=$(resolve_tag_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}" "*-${KODI_BRANCH}")
|
GAME_NEW_VERSION=$(resolve_tag_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}" "*-${KODI_BRANCH}")
|
||||||
|
else
|
||||||
|
GAME_NEW_VERSION=$(resolve_tag_on_gh "${GAME_GIT_REPO}" "-${KODI_BRANCH}")
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "${GAME_NEW_VERSION}" ]; then
|
if [ -z "${GAME_NEW_VERSION}" ]; then
|
||||||
NO_TAG="yes"
|
NO_TAG="yes"
|
||||||
echo "========================================================================"
|
echo "========================================================================"
|
||||||
msg_warn "WARNING: no tag found for addon ${GAME_ADDON}, falling back to HEAD"
|
msg_warn "WARNING: no tag found for addon ${GAME_ADDON}, falling back to HEAD"
|
||||||
echo "========================================================================"
|
echo "========================================================================"
|
||||||
|
if [ -z "$GITHUB_API_TOKEN" ]; then
|
||||||
GAME_NEW_VERSION=$(resolve_hash_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}")
|
GAME_NEW_VERSION=$(resolve_hash_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}")
|
||||||
|
else
|
||||||
|
GAME_NEW_VERSION=$(resolve_hash_on_gh "${GAME_GIT_REPO}" "${GAME_GIT_BRANCH}")
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user