#!/bin/bash
set -e

BLUE='\E[1;34m'
CYAN='\E[1;36m'
YELLOW='\E[1;33m'
GREEN='\E[1;32m'
RESET='\E[0m'

GSA_VERSION=$(curl -sSfL "https://api.github.com/repos/Zxilly/go-size-analyzer/releases/latest" | jq -r '.tag_name')

# Determine the correct binary file for the architecture given
case $TARGETPLATFORM in
	linux/arm64)
		ARCH=arm64
		;;

	linux/arm/v7)
		ARCH=arm
		;;

	*)
		ARCH=amd64
		;;
esac

if [ "$ARCH" = "amd64" ]; then
	echo -e "${BLUE}❯ ${CYAN}Installing golangci-lint ...${RESET}"
	go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest

	echo -e "${BLUE}❯ ${CYAN}Installing richgo ...${RESET}"
	go install github.com/kyoh86/richgo@latest

	echo -e "${BLUE}❯ ${CYAN}Installing govulncheck ...${RESET}"
	go install golang.org/x/vuln/cmd/govulncheck@latest

	echo -e "${BLUE}❯ ${CYAN}Installing tparse ...${RESET}"
	go install github.com/mfridman/tparse@latest

	echo -e "${BLUE}❯ ${CYAN}Installing go-junit-report ...${RESET}"
	go install github.com/jstemmer/go-junit-report@latest

	echo -e "${BLUE}❯ ${CYAN}Installing go-test-coverage ...${RESET}"
	go install github.com/vladopajic/go-test-coverage/v2@latest

	echo -e "${BLUE}❯ ${CYAN}Installing go-size-analyzer ...${RESET}"
	wget -O "/tmp/go-size-analyzer_linux_${ARCH}.tar.gz" "https://github.com/Zxilly/go-size-analyzer/releases/download/${GSA_VERSION}/go-size-analyzer_linux_${ARCH}.tar.gz"
	cd /usr/bin/
	tar -xzf "/tmp/go-size-analyzer_linux_${ARCH}.tar.gz" gsa
	rm -rf "/tmp/go-size-analyzer_linux_${ARCH}.tar.gz"

	echo -e "${BLUE}❯ ${CYAN}Installing go-mod-upgrade ...${RESET}"
	go install github.com/oligot/go-mod-upgrade@latest
fi

rm -rf "$(go env GOPATH)/.cache/go-build"
echo -e "${BLUE}❯ ${GREEN}Tools install completed${RESET}"
