#!/bin/bash IFS=$'\n' for tool in $(jq -cr '.[]' ./toolchain.json); do TOOL_NAME=$(echo "$tool" | jq -r '.name') [ -z "$TOOL_NAME" ] && echo "Invalid syntax" && exit 1 echo "==============================" echo "Installing $TOOL_NAME..." echo "==============================" TOOL_MANIFEST_URL=$(echo "$tool" | jq -r '.url') if [ -z "$TOOL_MANIFEST_URL" ]; then echo "No manifest found, skipping tool" continue fi TOOL_MANIFEST=$(curl -s $TOOL_MANIFEST_URL) for version in $(echo "$tool" | jq -r '.versions[]'); do echo "Installing version $version" found=false for check_version in $(echo "$TOOL_MANIFEST" | jq -cr '.[]'); do if [[ "$(echo "$check_version" | jq -r '.version')" != $version ]]; then continue fi for check_file in $(echo "$check_version" | jq -cr '.files[]'); do TOOL_PLATFORM=$(echo "$tool" | jq -r '.platform') TOOL_ARCH=$(echo "$tool" | jq -r '.arch') TOOL_PLATFORM_VERSION=$(echo "$tool" | jq -r '.platform_version') if [ -n "$TOOL_PLATFORM" ]; then [ $TOOL_PLATFORM != $(echo "$check_file" | jq -r '.platform') ] && continue fi if [ -n "$TOOL_ARCH" ]; then [ $TOOL_ARCH != $(echo "$check_file" | jq -r '.arch') ] && continue fi if [ -n "$TOOL_PLATFORM_VERSION" ]; then [ $TOOL_PLATFORM_VERSION != $(echo "$check_file" | jq -r '.platform_version') ] && continue fi found=true FILENAME=$(echo "$check_file" | jq -r '.filename') DOWNLOAD_URL=$(echo "$check_file" | jq -r '.download_url') echo "Downloading package from $DOWNLOAD_URL" curl -sL -o /tmp/build/$FILENAME $DOWNLOAD_URL if [ $? -ne 0 ]; then echo "Unable to download package" && exit 1 fi mkdir -p /tmp/build/$FILENAME-dir tar -xzf /tmp/build/$FILENAME -C /tmp/build/$FILENAME-dir if [ $? -ne 0 ]; then echo "Unable to extract package" && exit 1 fi rm /tmp/build/$FILENAME cd /tmp/build/$FILENAME-dir echo "Setting up package $FILENAME" bash ./setup.sh cd .. rm -rf $FILENAME-dir break done break done [ $found == false ] && echo "Unable to find package" && exit 1 done done exit 0