From 947489f78e3c8943b22b5cacce852e201c2da543 Mon Sep 17 00:00:00 2001 From: Matthew Sevey <15232757+MSevey@users.noreply.github.com> Date: Wed, 4 Dec 2024 10:58:36 -0500 Subject: [PATCH] feat: add go version comparison to rollkit install script (#525) * feat: add go version comparison to rollkit install script * chore: update formatting of print outs --- public/install.sh | 92 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 7 deletions(-) diff --git a/public/install.sh b/public/install.sh index b459fbbb1..fa6fe850a 100755 --- a/public/install.sh +++ b/public/install.sh @@ -1,17 +1,95 @@ #!/bin/bash -echo "Downloading Rollkit source code..." +# Define colors for output +RED="\033[31m" +GREEN="\033[32m" +YELLOW="\033[33m" +CYAN="\033[36m" +BOLD="\033[1m" +RESET="\033[0m" + +# Function to print headers +print_header() { + echo -e "${CYAN}${BOLD}--> $1${RESET}" +} + +# Function to print success messages +print_success() { + echo -e "${GREEN}${BOLD}$1${RESET}" +} + +# Function to print warnings +print_warning() { + echo -e "${YELLOW}${BOLD}$1${RESET}" +} + +# Function to print errors +print_error() { + echo -e "${RED}${BOLD}$1${RESET}" +} + +# Function to compare versions +compare_versions() { + if [ "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" = "$1" ]; then + if [ "$1" = "$2" ]; then + return 0 # Equal + else + return 1 # First is less + fi + else + return 2 # First is greater + fi +} + +print_header "Downloading Rollkit source code..." git clone https://github.com/rollkit/rollkit.git +echo "" + +cd rollkit || { print_error "Failed to find the downloaded repository."; exit 1; } + +print_header "Extracting Go version from go.mod..." +go_mod_version=$(grep "^go " go.mod | cut -d' ' -f2) +if [ -z "$go_mod_version" ]; then + print_error "Error: Could not find a Go version in go.mod." + exit 1 +fi +formatted_go_version="go${go_mod_version}" +echo -e " Required Go version: ${BOLD}${formatted_go_version}${RESET}\n" + +print_header "Checking if Go is installed..." if ! which go > /dev/null; then - echo "Go is not installed. Attempting to install Go..." - curl -sL "https://rollkit.dev/install-go.sh" | sh -s "go1.22.2" + print_warning "Go is not installed. Attempting to install Go..." + curl -sL "https://rollkit.dev/install-go.sh" | sh -s "$formatted_go_version" +fi + +installed_version=$(go version | awk '{print $3}' | sed 's/go//') +echo -e " Installed Go version: ${BOLD}${installed_version}${RESET}\n" + +print_header "Validating installed Go version..." +compare_versions "$installed_version" "$go_mod_version" +comparison_result=$? + +if [ $comparison_result -eq 1 ]; then + print_error "ERROR: The installed Go version ($installed_version) is less than the required version ($go_mod_version)." + echo " Please upgrade your version of Go." + exit 1 +elif [ $comparison_result -eq 2 ]; then + print_warning "INFO: The installed Go version ($installed_version) is greater than the required version ($go_mod_version)." + echo " If you run into issues, try downgrading your version of Go." fi +echo "" -cd rollkit || { echo "Failed to find the downloaded repository."; exit 1; } -git fetch && git checkout $1 -echo "Building and installing Rollkit..." +print_header "Fetching and checking out the specified branch or tag..." +git fetch && git checkout "$1" +echo "" + +print_header "Building and installing Rollkit..." make install +print_success "Rollkit CLI installed successfully!" + cd .. -echo "Installation completed successfully." +print_header "Cleaning up downloads..." +rm -rf rollkit +print_success "Installation completed successfully."