update scripts: rework tag fetching with GitHub API

Use GitHub GraphQL API to sort fetched tags by date instead by version 
number.
This commit is contained in:
Portisch 2021-10-13 10:35:55 +02:00 committed by Matthias Reichl
parent 7a95a37153
commit adbfe62cbe
3 changed files with 25 additions and 11 deletions

View File

@ -127,7 +127,9 @@ for addontxt in ${ADDONS_REPO_LOCATION}/*-addons.txt ; do
git_clone ${GIT_REPO} ${GIT_DIR} ${GIT_BRANCH} git_clone ${GIT_REPO} ${GIT_DIR} ${GIT_BRANCH}
PARAMS="resolve_tag_in_branch ${GIT_DIR} ${GIT_BRANCH}" PARAMS="resolve_tag_in_branch ${GIT_DIR} ${GIT_BRANCH}"
else else
PARAMS="resolve_tag_on_gh ${GIT_REPO} ${GIT_BRANCH}" REPO=$(basename "${GIT_REPO}")
OWNER=$(basename "${GIT_REPO%/${REPO}*}")
PARAMS="resolve_tag_on_gh ${OWNER} ${REPO} ${GIT_BRANCH}"
fi fi
NEW_VERSION=$(${PARAMS}) NEW_VERSION=$(${PARAMS})

View File

@ -84,17 +84,27 @@ resolve_tag_in_branch() {
resolve_tag_on_gh() { resolve_tag_on_gh() {
local tag local tag
tag=$(curl -s -L -H "Authorization: token ${GITHUB_API_TOKEN}" \ local QUERY=$(tr '\n' ' ' <<EOF
"${1/*github.com/https:\/\/api.github.com\/repos}/releases" | \ {
jq -r '[.[] | select(.target_commitish == "'$2'")][0].tag_name | select (.!=null)') repository(owner: \\"${1}\\", name: \\"${2}\\") {
refs(refPrefix: \\"refs/tags/\\", first: 100, orderBy: {field: TAG_COMMIT_DATE, direction: DESC}) {
edges {
node {
name
}
}
}
}
}
EOF
)
if [ -z "$tag" ] ; then tag=$(curl -s -L -H 'Content-Type: application/json' \
tag=$(curl -s -L -H "Authorization: token ${GITHUB_API_TOKEN}" \ -H "Authorization: bearer ${GITHUB_API_TOKEN}" \
"${1/*github.com/https:\/\/api.github.com\/repos}/tags" | \ -X POST -d "{ \"query\": \"${QUERY}\" }" https://api.github.com/graphql | \
jq -r '[.[] | select(.name | contains("'$2'"))][0].name | select (.!=null)') jq -r '[.data.repository.refs.edges[] | select(.node.name | contains("'${3}'"))][0].node.name | select (.!=null)')
fi
echo "$tag" echo "${tag}"
} }
check_package_excluded() { check_package_excluded() {

View File

@ -126,7 +126,9 @@ for addon in ${ADDONS_DIR}/*.*/ ; do
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 else
GAME_NEW_VERSION=$(resolve_tag_on_gh "${GAME_GIT_REPO}" "-${KODI_BRANCH}") REPO=$(basename "${GAME_GIT_REPO}")
OWNER=$(basename "${GAME_GIT_REPO%/${REPO}*}")
GAME_NEW_VERSION=$(resolve_tag_on_gh "${OWNER}" "${REPO}" "-${KODI_BRANCH}")
fi fi
if [ -z "${GAME_NEW_VERSION}" ]; then if [ -z "${GAME_NEW_VERSION}" ]; then