diff --git a/.gitignore b/.gitignore index 3b29812086f28a2b21884e57ead495ffd9434178..bc1000195251d7d8595e50fc5908862f61abbb1e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ DerivedData/ .swiftpm/config/registries.json .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata .netrc +/.build-bindings diff --git a/build-bindings.sh b/build-bindings.sh new file mode 100755 index 0000000000000000000000000000000000000000..c307b05e69952f3815b492faa16cfe7263eff7dd --- /dev/null +++ b/build-bindings.sh @@ -0,0 +1,71 @@ +#!/bin/sh + +#======================================= +# Configuration +#======================================= + +working_dir="$(pwd)" +temp_dir="$(dirname $(realpath $0))/.build-bindings" +client_git_url="https://gitlab.com/elixxir/client.git" +client_git_dir="$temp_dir/client" +client_git_commit="$1" +frameworks_dir="$(dirname $(realpath $0))/Frameworks" + +#======================================= +# Helpers +#======================================= + +message() { + local text=$1 + echo "" + echo "\033[1;32mâ–¶ ${text}\033[0m" +} + +#======================================= +# Main script +#======================================= + +set -e + +if [ ! -n "$client_git_commit" ]; then + echo "Invalid option. Usage:" + echo " build-bindings.sh COMMIT_HASH - Build Bindings from provided commit" + exit 1 +fi + +message "Go version..." +go version + +if [ ! -d "$client_git_dir" ]; then + message "Cloning client repo..." + git clone $client_git_url $client_git_dir +else + message "Updating client repo..." + cd $client_git_dir + git reset --hard + git fetch origin + cd $working_dir +fi + +message "Checkout commit $client_git_commit..." +cd $client_git_dir +git switch --detach $client_git_commit +git reset --hard + +message "Build client..." +go mod tidy +rm -rf vendor/ +go build ./... + +message "Make Bindings.xcframework..." +go get golang.org/x/mobile/bind +go install golang.org/x/mobile/cmd/gomobile@latest +gomobile init +gomobile bind -target ios gitlab.com/elixxir/client/bindings + +message "Move framework..." +cd $working_dir +rm -rf "$frameworks_dir/Bindings.xcframework" +mv "$client_git_dir/Bindings.xcframework" "$frameworks_dir/" + +message "Done."