mirror of
https://github.com/MaintainTeam/LastPipeBender.git
synced 2025-03-01 05:48:22 +03:00
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:
parent
76537e4e00
commit
7772621f8a
1 changed files with 57 additions and 33 deletions
|
@ -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"
|
||||
|
|
Loading…
Add table
Reference in a new issue