BraveNewPipe: refactor the data.json creation script to work with several branches

As for now we use separated release data.json.
One for brave and braveConscrypt flavor and one for braveLegacy
This commit is contained in:
evermind 2024-03-10 09:13:04 +01:00
parent 76537e4e00
commit 7772621f8a

View file

@ -1,4 +1,5 @@
#!/usr/bin/env bash
# this script updates the json file with new version that BraveNewPipe is fetching regulary
set -e
@ -17,40 +18,42 @@ TAG=$1
APK_FILE=$2
BNP_R_MGR_REPO="bnp-r-mgr"
GITHUB_LOGIN="bravenewpipe"
RELEASE_BODY="Apk available at bravenewpipe/NewPipe@${TAG}](https://github.com/bravenewpipe/NewPipe/releases/tag/${TAG})."
GIT_BRANCH="master"
GITHUB_USER="bravenewpipe"
RELEASE_REPO="NewPipe"
RELEASE_BODY="Apk available at ${GITHUB_USER}/${RELEASE_REPO}@${TAG}](https://github.com/${GITHUB_USER}/${RELEASE_REPO}/releases/tag/${TAG})."
PRERELEASE="false"
if [[ "$TAG" == "latest" ]]; then
PRERELEASE="true"
fi
if [[ "$GITHUB_REPOSITORY" != "bravenewpipe/NewPipe" ]]; then
echo "This mirror script is only meant to be run from bravenewpipe/NewPipe, not ${GITHUB_REPOSITORY}. Nothing to do here."
if [[ "$GITHUB_REPOSITORY" != "${GITHUB_USER}/${RELEASE_REPO}" ]]; then
echo "This mirror script is only meant to be run from ${GITHUB_USER}/${RELEASE_REPO}, not ${GITHUB_REPOSITORY}. Nothing to do here."
exit 0
fi
create_tagged_release() {
REPO=$1
COMMIT_MSG=$2
pushd /tmp/${REPO}/
local L_REPO=$1
local L_BRANCH=$2
local L_COMMIT_MSG=$3
pushd /tmp/${L_REPO}/
# Set the local git identity
git config user.email "${GITHUB_LOGIN}@users.noreply.github.com"
git config user.name "$GITHUB_LOGIN"
git config user.email "${GITHUB_USER}@users.noreply.github.com"
git config user.name "$GITHUB_USER"
# Obtain the release ID for the previous release of $TAG (if present)
local previous_release_id=$(curl --user ${GITHUB_LOGIN}:${GITHUB_SUPER_TOKEN} --request GET --silent https://api.github.com/repos/${GITHUB_LOGIN}/${REPO}/releases/tags/${TAG} | jq '.id')
local previous_release_id=$(curl --user ${GITHUB_USER}:${GITHUB_SUPER_TOKEN} --request GET --silent https://api.github.com/repos/${GITHUB_USER}/${L_REPO}/releases/tags/${TAG} | jq '.id')
# Delete the previous release (if present)
if [[ -n "$previous_release_id" ]]; then
echo "Deleting previous release: ${previous_release_id}"
curl \
--user ${GITHUB_LOGIN}:${GITHUB_SUPER_TOKEN} \
--user ${GITHUB_USER}:${GITHUB_SUPER_TOKEN} \
--request DELETE \
--silent \
https://api.github.com/repos/${GITHUB_LOGIN}/${REPO}/releases/${previous_release_id}
https://api.github.com/repos/${GITHUB_USER}/${L_REPO}/releases/${previous_release_id}
fi
# Delete previous identical tags, if present
@ -59,18 +62,18 @@ create_tagged_release() {
# Add all the changed files and push the changes upstream
git add -f .
git commit -m "${COMMIT_MSG}" || true
git push -f origin ${GIT_BRANCH}:${GIT_BRANCH}
git commit -m "${L_COMMIT_MSG}" || true
git push -f origin ${L_BRANCH}:${L_BRANCH}
git tag $TAG
git push origin $TAG
# evermind -- we don't want any release entries there # Generate a skeleton release on GitHub
# evermind -- we don't want any release entries there curl \
# evermind -- we don't want any release entries there --user ${GITHUB_LOGIN}:${GITHUB_SUPER_TOKEN} \
# evermind -- we don't want any release entries there --user ${GITHUB_USER}:${GITHUB_SUPER_TOKEN} \
# evermind -- we don't want any release entries there --request POST \
# evermind -- we don't want any release entries there --silent \
# evermind -- we don't want any release entries there --data @- \
# evermind -- we don't want any release entries there https://api.github.com/repos/${GITHUB_LOGIN}/${REPO}/releases <<END
# evermind -- we don't want any release entries there https://api.github.com/repos/${GITHUB_USER}/${L_REPO}/releases <<END
# evermind -- we don't want any release entries there {
# evermind -- we don't want any release entries there "tag_name": "$TAG",
# evermind -- we don't want any release entries there "name": "Auto-generated release for tag $TAG",
@ -82,27 +85,48 @@ create_tagged_release() {
popd
}
BUILD_TOOLS_VERSION="${BUILD_TOOLS_VERSION:-29.0.3}"
create_json_file_and_create_tagged_release() {
local L_BRANCH="$1"
local L_URL_STABLE="$2"
local L_URL_ALTERNATIVE="$3"
# checkout json release file repo
rm -rf "/tmp/${BNP_R_MGR_REPO}"
git clone --branch "${L_BRANCH}" "https://${GITHUB_USER}:${GITHUB_SUPER_TOKEN}@github.com/${GITHUB_USER}/${BNP_R_MGR_REPO}.git" /tmp/${BNP_R_MGR_REPO}
# update version{code,name} and download url
cat $JSON_FILE \
| jq '.flavors.github.stable.version_code = '${VERSION_CODE}'' \
| jq '.flavors.github.stable.version = "'${VERSION_NAME}'"' \
| jq '.flavors.github.stable.apk = "'${L_URL_STABLE}'"' \
| jq '( .flavors.github.stable.alternative_apks[] | select(.alternative == "conscrypt") ).url |= "'${L_URL_ALTERNATIVE}'"' \
> $TEMPFILE
mv $TEMPFILE $JSON_FILE
create_tagged_release "$BNP_R_MGR_REPO" "$L_BRANCH" "\"version\": \"$VERSION_NAME\""
}
detect_build_tools_version() {
ls /usr/local/lib/android/sdk/build-tools/ | tail -n 1
}
BUILD_TOOLS_VERSION="${BUILD_TOOLS_VERSION:-$(detect_build_tools_version)}"
AAPT=$ANDROID_HOME/build-tools/$BUILD_TOOLS_VERSION/aapt
URL="https://github.com/bravenewpipe/NewPipe/releases/download/${TAG}/BraveNewPipe_${TAG}.apk"
URL_CONSCRYPT="https://github.com/bravenewpipe/NewPipe/releases/download/${TAG}/BraveNewPipe_conscrypt_${TAG}.apk"
URL_PREFIX="https://github.com/${GITHUB_USER}/${RELEASE_REPO}/releases/download/${TAG}"
URL="$URL_PREFIX/BraveNewPipe_${TAG}.apk"
URL_CONSCRYPT="$URL_PREFIX/BraveNewPipe_conscrypt_${TAG}.apk"
URL_LEGACY="$URL_PREFIX/BraveNewPipe_legacy_${TAG}.apk"
VERSION_NAME=${TAG/v/}
VERSION_CODE="$($AAPT d badging $APK_FILE | grep -Po "(?<=\sversionCode=')([0-9.-]+)")"
TEMPFILE="$(mktemp -p /tmp -t sdflhXXXXXXXXX)"
JSON_FILE=/tmp/${BNP_R_MGR_REPO}/api/data.json
# checkout json release file repo
rm -rf "/tmp/${BNP_R_MGR_REPO}"
git clone --branch "${GIT_BRANCH}" "https://bravenewpipe:${GITHUB_SUPER_TOKEN}@github.com/bravenewpipe/${BNP_R_MGR_REPO}.git" /tmp/${BNP_R_MGR_REPO}
# update version{code,name} and download url
cat $JSON_FILE \
| jq '.flavors.github.stable.version_code = '${VERSION_CODE}'' \
| jq '.flavors.github.stable.version = "'${VERSION_NAME}'"' \
| jq '.flavors.github.stable.apk = "'${URL}'"' \
| jq '( .flavors.github.stable.alternative_apks[] | select(.alternative == "conscrypt") ).url |= "'${URL_CONSCRYPT}'"' \
> $TEMPFILE
mv $TEMPFILE $JSON_FILE
create_tagged_release "$BNP_R_MGR_REPO" "\"version\": \"$VERSION_NAME\""
# We have two different json files for now:
# The first is used within the flavors brave and braveConscrypt
# and the second is used in braveLegacy. The json files
# are stored in the same repo but in different branches.
# We call kitkat stuff first as each call tags and delete same exising
# tags before and we want the master branch to have the actual tag.
create_json_file_and_create_tagged_release "kitkat" "$URL_LEGACY" "$URL_LEGACY"
create_json_file_and_create_tagged_release "master" "$URL" "$URL_CONSCRYPT"