From 2c6d80c90fdb51d5f7d73ea85990f7ce31d87f27 Mon Sep 17 00:00:00 2001 From: Claudemirovsky <63046606+Claudemirovsky@users.noreply.github.com> Date: Fri, 3 Mar 2023 09:00:57 -0300 Subject: [PATCH] feat(bump-versions.sh): Add support to multisrc (#1356) * feat(bump-versions.sh): Add support to multisrc * [skip ci] re-add fix in workflow for library updates --- .github/scripts/bump-versions.sh | 80 +++++++++++++++++++++++++++----- .github/workflows/build_push.yml | 6 +++ 2 files changed, 75 insertions(+), 11 deletions(-) diff --git a/.github/scripts/bump-versions.sh b/.github/scripts/bump-versions.sh index 2652fa7fb..17ff57c3d 100755 --- a/.github/scripts/bump-versions.sh +++ b/.github/scripts/bump-versions.sh @@ -1,32 +1,90 @@ #!/bin/bash versionStr="extVersionCode =" +multisrcVersionStr="overrideVersionCode =" +bumpedFiles="" + +# cut -d "=" -f 2 -> string.split("=")[1] +# "extVersionCode = 6" -> ["extVersionCode ", " 6"] -> " 6" -> "6" +getValue() { cut -d "=" -f 2 | cut -d " " -f 2;} getVersion() { - # cut -d "=" -f 2 -> string.split("=")[1] - # "extVersionCode = 6" -> ["extVersionCode ", " 6"] -> " 6" -> "6" - grep "$versionStr" "$1" | cut -d "=" -f 2 | cut -d " " -f 2 + if [[ $1 =~ ^multisrc/ ]]; then + # We are going to be piped, so no file specified, just read from stdin. + grep -Po "$multisrcVersionStr \d+" | getValue + else + grep "$versionStr" "$1" | getValue + fi +} + +# expected input: multisrc/overrides///.... +# if override is default, then it will bump all overrides. +bumpMultisrcVersion() { + local overridePath=$1 + # Prevents bumping extensions multiple times. + # Ex: When a theme uses a extractor per default, but one extension(override) + # also uses another, so if both libs are modifyed, such extension will be + # bumped only once instead of two times. + if [[ $bumpedFiles =~( |^)$overridePath( |$) ]]; then + return 0 + fi + + bumpedFiles+="$overridePath " + + # Bump all extensions from a multisrc that implements a lib by default + if [[ $overridePath =~ .*/default/.* ]]; then + local themeBase=$(echo $overridePath | cut -d/ -f-3) + for file in $(ls $themeBase | grep -v default); do + bumpMultisrcVersion $themeBase/$file/ + done + else + local theme=$(echo $overridePath | cut -d/ -f3) + local themePath="multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/$theme" + local sourceName=$(echo $overridePath | cut -d/ -f4) + local generator=$(echo $themePath/*Generator.kt) + bumpedFiles+="$generator " # Needed to commit the changes + + local sourceLine=$(grep -i $sourceName $generator) + local oldVersion=$(echo $sourceLine | getVersion $generator) + local newVersionStr="$multisrcVersionStr $((oldVersion + 1))" + + if [[ $sourceLine =~ .*$multisrcVersionStr.* ]]; then + # if the override already have a "overrideVersionCode" param at + # the generator, then just bump it + local newSourceLine=${sourceLine/$multisrcVersionStr $oldVersion/$newVersionStr} + else + # else, add overrideVersionCode param to its line on the generator + local newSourceLine=${sourceLine/)/, $newVersionStr)} + fi + + echo -e "\nmultisrc $sourceName($theme): $oldVersion -> $((oldVersion + 1))\n" + sed -i "s@$sourceLine@$newSourceLine@g" $generator + fi } bumpVersion() { local file=$1 - local old_version=$(getVersion $file) - local new_version=$((old_version + 1)) + local oldVersion=$(getVersion $file) + local newVersion=$((oldVersion + 1)) - echo -e "\n$file: $old_version -> $new_version\n" - sed -i "s/$versionStr $old_version/$versionStr $new_version/" $file + echo -e "\n$file: $oldVersion -> $newVersion\n" + sed -i "s/$versionStr $oldVersion/$versionStr $newVersion/" $file } findAndBump() { - local bumpedFiles="" for lib in $@; do - for file in $(grep -l -R ":lib-$lib" --include "build.gradle"); do + for file in $(grep -l -R ":lib-$lib" --include "build.gradle" --include "additional.gradle"); do # prevent bumping the same extension multiple times if [[ ! $bumpedFiles =~ ( |^)$file( |$) ]]; then - bumpedFiles+="$file " - bumpVersion $file + if [[ $file =~ ^multisrc ]]; then + bumpMultisrcVersion ${file/additional.gradle/} + else + bumpedFiles+="$file " + bumpVersion $file + fi fi done done + commitChanges $bumpedFiles } diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml index 3d16db8a3..d17872947 100644 --- a/.github/workflows/build_push.yml +++ b/.github/workflows/build_push.yml @@ -26,6 +26,8 @@ jobs: steps: - name: Clone repo uses: actions/checkout@v3 + with: + ref: master - name: Find lib changes id: modified-libs @@ -89,6 +91,8 @@ jobs: steps: - name: Checkout master branch uses: actions/checkout@v3 + with: + ref: master - name: Set up JDK uses: actions/setup-java@v3 @@ -138,6 +142,8 @@ jobs: steps: - name: Checkout master branch uses: actions/checkout@v3 + with: + ref: master - name: Set up JDK uses: actions/setup-java@v3