From 6623ae0c96c6caa0339071104eacf13a57113cd4 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Mon, 29 Aug 2022 23:04:36 +0100
Subject: [PATCH] Add build-bindings.sh script

---
 .gitignore        |  1 +
 build-bindings.sh | 71 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 72 insertions(+)
 create mode 100755 build-bindings.sh

diff --git a/.gitignore b/.gitignore
index 3b298120..bc100019 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 00000000..c307b05e
--- /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."
-- 
GitLab