From dc5aae831f1497e0d9eca85e6a2dcad692691a3f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 30 Jun 2025 12:04:25 +0200 Subject: [PATCH] Fix shellcheck issue on release.sh --- tools/release/release.sh | 68 ++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/tools/release/release.sh b/tools/release/release.sh index d2fe217651..4120a1da06 100755 --- a/tools/release/release.sh +++ b/tools/release/release.sh @@ -68,7 +68,7 @@ buildToolsVersion="35.0.0" buildToolsPath="${androidHome}/build-tools/${buildToolsVersion}" if [[ ! -d ${buildToolsPath} ]]; then - printf "Fatal: ${buildToolsPath} folder not found, ensure that you have installed the SDK version ${buildToolsVersion}.\n" + printf "Fatal: %s folder not found, ensure that you have installed the SDK version %s.\n" "${buildToolsPath}" "${buildToolsVersion}" exit 1 fi @@ -100,7 +100,7 @@ versionYearCandidate=$(date +%y) currentVersionMonth=$(grep "val versionMonth" ${versionsFile} | cut -d " " -f6) # Get current month on 2 digits versionMonthCandidate=$(date +%m) -versionMonthCandidateNoLeadingZero=$(echo ${versionMonthCandidate} | sed 's/^0//') +versionMonthCandidateNoLeadingZero=${versionMonthCandidate/#0/} currentVersionReleaseNumber=$(grep "val versionReleaseNumber" ${versionsFile} | cut -d " " -f6) # if the current month is the same as the current version, we increment the release number, else we reset it to 0 if [[ ${currentVersionMonth} -eq ${versionMonthCandidateNoLeadingZero} ]]; then @@ -110,17 +110,17 @@ else fi versionCandidate="${versionYearCandidate}.${versionMonthCandidate}.${versionReleaseNumberCandidate}" -read -p "Please enter the release version (example: ${versionCandidate}). Format must be 'YY.MM.x' or 'YY.MM.xy'. Just press enter if ${versionCandidate} is correct. " version +read -r -p "Please enter the release version (example: ${versionCandidate}). Format must be 'YY.MM.x' or 'YY.MM.xy'. Just press enter if ${versionCandidate} is correct. " version version=${version:-${versionCandidate}} # extract year, month and release number for future use versionYear=$(echo "${version}" | cut -d "." -f1) versionMonth=$(echo "${version}" | cut -d "." -f2) -versionMonthNoLeadingZero=$(echo ${versionMonth} | sed 's/^0//') +versionMonthNoLeadingZero=${versionMonth/#0/} versionReleaseNumber=$(echo "${version}" | cut -d "." -f3) printf "\n================================================================================\n" -printf "Starting the release ${version}\n" +printf "Starting the release %s\n" "${version}" git flow release start "${version}" # Note: in case the release is already started and the script is started again, checkout the release branch again. @@ -147,7 +147,7 @@ fastlaneFile="20${versionYear}${versionMonth}${versionReleaseNumber2Digits}0.txt fastlanePathFile="./fastlane/metadata/android/en-US/changelogs/${fastlaneFile}" printf "Main changes in this version: TODO.\nFull changelog: https://github.com/element-hq/element-x-android/releases" > "${fastlanePathFile}" -read -p "I have created the file ${fastlanePathFile}, please edit it and press enter to continue. " +read -r -p "I have created the file ${fastlanePathFile}, please edit it and press enter to continue. " git add "${fastlanePathFile}" git commit -a -m "Adding fastlane file for version ${version}" @@ -156,11 +156,11 @@ printf "OK, finishing the release...\n" git flow release finish "${version}" printf "\n================================================================================\n" -read -p "Done, push the branch 'main' and the new tag (yes/no) default to yes? " doPush +read -r -p "Done, push the branch 'main' and the new tag (yes/no) default to yes? " doPush doPush=${doPush:-yes} if [ "${doPush}" == "yes" ]; then - printf "Pushing branch 'main' and tag 'v${version}'...\n" + printf "Pushing branch 'main' and tag 'v%s'...\n" "${version}" git push origin main git push origin "v${version}" else @@ -173,7 +173,7 @@ git checkout develop printf "\n================================================================================\n" printf "The GitHub action https://github.com/element-hq/element-x-android/actions/workflows/release.yml?query=branch%%3Amain should have start a new run.\n" -read -p "Please enter the url of the run, no need to wait for it to complete (example: https://github.com/element-hq/element-x-android/actions/runs/9065756777): " runUrl +read -r -p "Please enter the url of the run, no need to wait for it to complete (example: https://github.com/element-hq/element-x-android/actions/runs/9065756777): " runUrl targetPath="./tmp/Element/${version}" @@ -190,7 +190,7 @@ while [[ $ret -ne 0 ]]; do ret=$? if [[ $ret -ne 0 ]]; then - read -p "Error while downloading the artifacts. You may want to fix the issue and retry. Retry (yes/no) default to yes? " doRetry + read -r -p "Error while downloading the artifacts. You may want to fix the issue and retry. Retry (yes/no) default to yes? " doRetry doRetry=${doRetry:-yes} if [ "${doRetry}" == "no" ]; then exit 1 @@ -225,7 +225,7 @@ cp "${fdroidTargetPath}"/app-fdroid-arm64-v8a-release.apk \ --ks-pass pass:"${keyStorePassword}" \ --ks-key-alias elementx \ --key-pass pass:"${keyPassword}" \ - --min-sdk-version ${minSdkVersion} \ + --min-sdk-version "${minSdkVersion}" \ "${fdroidTargetPath}"/app-fdroid-arm64-v8a-release-signed.apk cp "${fdroidTargetPath}"/app-fdroid-armeabi-v7a-release.apk \ @@ -237,7 +237,7 @@ cp "${fdroidTargetPath}"/app-fdroid-armeabi-v7a-release.apk \ --ks-pass pass:"${keyStorePassword}" \ --ks-key-alias elementx \ --key-pass pass:"${keyPassword}" \ - --min-sdk-version ${minSdkVersion} \ + --min-sdk-version "${minSdkVersion}" \ "${fdroidTargetPath}"/app-fdroid-armeabi-v7a-release-signed.apk cp "${fdroidTargetPath}"/app-fdroid-x86-release.apk \ @@ -249,7 +249,7 @@ cp "${fdroidTargetPath}"/app-fdroid-x86-release.apk \ --ks-pass pass:"${keyStorePassword}" \ --ks-key-alias elementx \ --key-pass pass:"${keyPassword}" \ - --min-sdk-version ${minSdkVersion} \ + --min-sdk-version "${minSdkVersion}" \ "${fdroidTargetPath}"/app-fdroid-x86-release-signed.apk cp "${fdroidTargetPath}"/app-fdroid-x86_64-release.apk \ @@ -261,7 +261,7 @@ cp "${fdroidTargetPath}"/app-fdroid-x86_64-release.apk \ --ks-pass pass:"${keyStorePassword}" \ --ks-key-alias elementx \ --key-pass pass:"${keyPassword}" \ - --min-sdk-version ${minSdkVersion} \ + --min-sdk-version "${minSdkVersion}" \ "${fdroidTargetPath}"/app-fdroid-x86_64-release-signed.apk printf "\n================================================================================\n" @@ -277,10 +277,10 @@ printf "File app-fdroid-x86_64-release-signed.apk:\n" "${buildToolsPath}"/aapt dump badging "${fdroidTargetPath}"/app-fdroid-x86_64-release-signed.apk | grep package printf "\n" -read -p "Does it look correct? Press enter when it's done. " +read -r -p "Does it look correct? Press enter when it's done. " printf "\n================================================================================\n" -printf "The APKs in ${fdroidTargetPath} have been signed!\n" +printf "The APKs in %s have been signed!\n" "${fdroidTargetPath}" printf "\n================================================================================\n" printf "Unzipping the Gplay artifact...\n" @@ -292,7 +292,7 @@ unsignedBundlePath="${gplayTargetPath}/app-gplay-release.aab" signedBundlePath="${gplayTargetPath}/app-gplay-release-signed.aab" printf "\n================================================================================\n" -printf "Signing file ${unsignedBundlePath} with build-tools version ${buildToolsVersion} for min SDK version ${minSdkVersion}...\n" +printf "Signing file %s with build-tools version %s for min SDK version %s...\n" "${unsignedBundlePath}" "${buildToolsVersion}" "${minSdkVersion}" cp "${unsignedBundlePath}" "${signedBundlePath}" @@ -302,7 +302,7 @@ cp "${unsignedBundlePath}" "${signedBundlePath}" --ks-pass pass:"${keyStorePassword}" \ --ks-key-alias elementx \ --key-pass pass:"${keyPassword}" \ - --min-sdk-version ${minSdkVersion} \ + --min-sdk-version "${minSdkVersion}" \ "${signedBundlePath}" printf "\n================================================================================\n" @@ -314,13 +314,13 @@ printf "Version name: " bundletool dump manifest --bundle="${signedBundlePath}" --xpath=/manifest/@android:versionName printf "\n" -read -p "Does it look correct? Press enter to continue. " +read -r -p "Does it look correct? Press enter to continue. " printf "\n================================================================================\n" -printf "The file ${signedBundlePath} has been signed and can be uploaded to the PlayStore!\n" +printf "The file %s has been signed and can be uploaded to the PlayStore!\n" "${signedBundlePath}" printf "\n================================================================================\n" -read -p "Do you want to build the APKs from the app bundle? You need to do this step if you want to install the application to your device. (yes/no) default to no " doBuildApks +read -r -p "Do you want to build the APKs from the app bundle? You need to do this step if you want to install the application to your device. (yes/no) default to no " doBuildApks doBuildApks=${doBuildApks:-no} if [ "${doBuildApks}" == "yes" ]; then @@ -329,12 +329,12 @@ if [ "${doBuildApks}" == "yes" ]; then --ks=./app/signature/debug.keystore --ks-pass=pass:android --ks-key-alias=androiddebugkey --key-pass=pass:android \ --overwrite - read -p "Do you want to install the application to your device? Make sure there is one (and only one!) connected device first. (yes/no) default to yes " doDeploy + read -r -p "Do you want to install the application to your device? Make sure there is one (and only one!) connected device first. (yes/no) default to yes " doDeploy doDeploy=${doDeploy:-yes} if [ "${doDeploy}" == "yes" ]; then printf "Installing apk for your device...\n" bundletool install-apks --apks="${gplayTargetPath}"/elementx.apks - read -p "Please run the application on your phone to check that the upgrade went well. Press enter to continue. " + read -r -p "Please run the application on your phone to check that the upgrade went well. Press enter to continue. " else printf "APK will not be deployed!\n" fi @@ -346,14 +346,14 @@ printf "\n====================================================================== printf "Create the open testing release on GooglePlay.\n" printf "On GooglePlay console, go the the open testing section and click on \"Create new release\" button, then:\n" -printf " - upload the file ${signedBundlePath}.\n" +printf " - upload the file %s.\n" "${signedBundlePath}" printf " - copy the release note from the fastlane file.\n" printf " - download the universal APK, to be able to provide it to the GitHub release: click on the right arrow next to the \"App bundle\", then click on the \"Download\" tab, and download the \"Signed, universal APK\".\n" printf " - submit the release.\n" -read -p "Press enter to continue. " +read -r -p "Press enter to continue. " printf "You can then go to \"Publishing overview\" and send the new release for a review by Google.\n" -read -p "Press enter to continue. " +read -r -p "Press enter to continue. " printf "\n================================================================================\n" githubCreateReleaseLink="https://github.com/element-hq/element-x-android/releases/new?tag=v${version}&title=Element%20X%20Android%20v${version}" @@ -362,22 +362,22 @@ printf -- "Open this link: %s\n" "${githubCreateReleaseLink}" printf "Then\n" printf " - Click on the 'Generate releases notes' button.\n" printf " - Optionally reorder items and fix typos.\n" -printf " - Add the file ${signedBundlePath} to the GitHub release.\n" +printf " - Add the file %s to the GitHub release.\n" "${signedBundlePath}" printf " - Add the universal APK, downloaded from the GooglePlay console to the GitHub release.\n" -printf " - Add the 4 signed APKs for F-Droid, located at ${fdroidTargetPath} to the GitHub release.\n" -read -p ". Press enter to continue. " +printf " - Add the 4 signed APKs for F-Droid, located at %s to the GitHub release.\n" "${fdroidTargetPath}" +read -r -p ". Press enter to continue. " printf "\n================================================================================\n" printf "Update the project release notes:\n\n" -read -p "Copy the content of the release note generated by GitHub to the file CHANGES.md and press enter to commit the change. " +read -r -p "Copy the content of the release note generated by GitHub to the file CHANGES.md and press enter to commit the change. " printf "\n================================================================================\n" printf "Committing...\n" git commit -a -m "Changelog for version ${version}" printf "\n================================================================================\n" -read -p "Done, push the branch 'develop' (yes/no) default to yes? (A rebase may be necessary in case develop got new commits) " doPush +read -r -p "Done, push the branch 'develop' (yes/no) default to yes? (A rebase may be necessary in case develop got new commits) " doPush doPush=${doPush:-yes} if [ "${doPush}" == "yes" ]; then @@ -390,12 +390,12 @@ fi printf "\n================================================================================\n" printf "Message for the Android internal room:\n\n" message="@room Element X Android ${version} is ready to be tested. You can get it from https://github.com/element-hq/element-x-android/releases/tag/v${version}. You can install the universal APK. If you want to install the application from the app bundle, you can follow instructions [here](https://github.com/element-hq/element-x-android/blob/develop/docs/install_from_github_release.md). Please report any feedback. Thanks!" -printf "${message}\n\n" +printf "%s\n\n" "${message}" if [[ -z "${elementBotToken}" ]]; then - read -p "ELEMENT_BOT_MATRIX_TOKEN is not defined in the environment. Cannot send the message for you. Please send it manually, and press enter to continue. " + read -r -p "ELEMENT_BOT_MATRIX_TOKEN is not defined in the environment. Cannot send the message for you. Please send it manually, and press enter to continue. " else - read -p "Send this message to the room (yes/no) default to yes? " doSend + read -r -p "Send this message to the room (yes/no) default to yes? " doSend doSend=${doSend:-yes} if [ "${doSend}" == "yes" ]; then printf "Sending message...\n"