diff --git a/tools/sdk/build_rust_sdk.sh b/tools/sdk/build_rust_sdk.sh new file mode 100755 index 0000000000..2a6b7b72d0 --- /dev/null +++ b/tools/sdk/build_rust_sdk.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash + +# Exit on error +set -e + +# Ask to build from local source or to clone the repository +read -p "Do you want to build the Rust SDK from local source (yes/no) default to yes? " buildLocal +buildLocal=${buildLocal:-yes} + +date=$(gdate +%Y%m%d%H%M%S) + +# Ask for the Rust SDK local source path +# if folder rustSdk/ exists, use it as default +if [ ${buildLocal} == "yes" ]; then + read -p "Please enter the path to the Rust SDK local source, default to ../matrix-rust-sdk" rustSdkPath + rustSdkPath=${rustSdkPath:-../matrix-rust-sdk/} + if [ ! -d "${rustSdkPath}" ]; then + printf "\nFolder ${rustSdkPath} does not exist. Please clone the matrix-rust-sdk repository in the folder ../matrix-rust-sdk.\n\n" + exit 0 + fi +else + read -p "Please enter the Rust SDK repository url, default to https://github.com/matrix-org/matrix-rust-sdk.git " rustSdkUrl + rustSdkUrl=${rustSdkUrl:-https://github.com/matrix-org/matrix-rust-sdk.git} + read -p "Please enter the Rust SDK branch, default to main " rustSdkBranch + rustSdkBranch=${rustSdkBranch:-main} + cd .. + git clone ${rustSdkUrl} matrix-rust-sdk-$date + cd matrix-rust-sdk-$date + git checkout ${rustSdkBranch} + rustSdkPath=$(pwd) + cd ../element-x-android +fi + + +cd ${rustSdkPath} +git status + +read -p "Will build with this version of the Rust SDK ^. Is it correct (yes/no) default to yes? " sdkCorrect +sdkCorrect=${sdkCorrect:-yes} + +if [ ${sdkCorrect} != "yes" ]; then + exit 0 +fi + +# Ask if the user wants to build the app after +read -p "Do you want to build the app after (yes/no) default to yes? " buildApp +buildApp=${buildApp:-yes} + +# If folder ../matrix-rust-components-kotlin does not exist, close the repo +if [ ! -d "../matrix-rust-components-kotlin" ]; then + printf "\nFolder ../matrix-rust-components-kotlin does not exist. Cloning the repository into ../matrix-rust-components-kotlin.\n\n" + git clone https://github.com/matrix-org/matrix-rust-components-kotlin.git ../matrix-rust-components-kotlin +fi + +printf "\nResetting matrix-rust-components-kotlin to the latest main branch...\n\n" +cd ../matrix-rust-components-kotlin +git reset --hard +git checkout main +git pull + +printf "\nBuilding the SDK...\n\n" +./scripts/build.sh -p ${rustSdkPath} -m sdk -t aarch64-linux-android -o ../element-x-android/libraries/rustsdk + +cd ../element-x-android +mv ./libraries/rustsdk/sdk-android-debug.aar ./libraries/rustsdk/matrix-rust-sdk.aar +mkdir -p ./libraries/rustsdk/sdks +cp ./libraries/rustsdk/matrix-rust-sdk.aar ./libraries/rustsdk/matrix-rust-sdk-${date}.aar + + +if [ ${buildApp} != "yes" ]; then + printf "\nBuilding the application...\n\n" + ./gradlew assembleDebug +fi + +if [ ${buildLocal} == "no" ]; then + printf "\nCleaning up...\n\n" + rm -rf ../matrix-rust-sdk-$date +fi + +printf "\nDone!\n"