From b6d1948c4b001e683da167e873161ba07d7beed7 Mon Sep 17 00:00:00 2001 From: jake Date: Thu, 22 May 2025 19:51:54 -0400 Subject: [PATCH] script rewrite - skips if version is installed - moved command setup to function --- TODO.txt | 3 --- install.sh | 59 ++++++++++++++++++++++++++++++------------------------ 2 files changed, 33 insertions(+), 29 deletions(-) delete mode 100644 TODO.txt diff --git a/TODO.txt b/TODO.txt deleted file mode 100644 index 4f059cd..0000000 --- a/TODO.txt +++ /dev/null @@ -1,3 +0,0 @@ -Comments are left in code using TODO# to track possible implementation location. - -TODO1. check current installed version to see if it matches requested install version, only error if they don't match \ No newline at end of file diff --git a/install.sh b/install.sh index 82f985d..20ab819 100755 --- a/install.sh +++ b/install.sh @@ -1,5 +1,24 @@ #!/bin/bash +#installs any commands set in the command input value +function installCommands { + #if commands input is set pull the input and install them all using 'go install' + if [[ "$GO_INSTALL_COMMANDS" != "." ]]; then # "." is used as a default + #allows for multiple cmds using | + INPUT_ARR=( $GO_INSTALL_COMMANDS ) + for i in "${INPUT_ARR[@]}"; do + echo "Installing go command from ${i}" + if go install ${i}; then + echo "Command setup for ${i}" + else + echo "FATAL: Unable to install ${i} with go" + exit 1 + fi + done + fi +} + +#start script echo "Starting Golang install" #validate version and architecture @@ -30,23 +49,24 @@ echo "Checking if go is already installed" # -v writes string that indicates command or command path to output, prevents command not found error GO_CHECK=$(command -v go) if [[ "$GO_CHECK" ]]; then - #if purge flag is set remove old go files - if [[ "$GO_INSTALL_PURGE" == "yes" ]]; then + #if the version of go matches the requested version, skip + GVC=$(go version) + if [[ "$GVC" == "go version go${DL_VERSION} linux/${DL_ARCH}" ]]; then + echo "Go ${DL_VERSION} already installed, skipping!" + installCommands + exit 0 + fi + #if the purge flag is not set and version does not match, exit + if [[ "$GO_INSTALL_PURGE" != "yes" ]]; then + echo "FATAL: The wrong version of Go is already installed, set purge to 'yes' if you wish to update installed version" + exit 1 + else echo "Removing old go versions" sudo rm -r /usr/bin/go sudo rm -r /usr/bin/gofmt - else - #TODO1: if installed version matches requested version we can consider the job successful - #go version go1.23.0 linux/amd64 - GVC=$(go version) - if [[ "$GVC" == "go version go${DL_VERSION} linux/${DL_ARCH}" ]]; then - echo "Requested Go version already installed, skipping." - exit 0 - fi - echo "FATAL: Go is already installed, set purge to 'yes' if you wish to update installed version" - exit 1 fi fi + echo "Ready for install" echo "Downloading go files for ${DL_VERSION}/${DL_ARCH}" @@ -88,17 +108,4 @@ GP=$(go env GOPATH)/bin export PATH=$PATH:$GP echo "$GP" >> "$GITHUB_PATH" -#if commands input is set pull the input and install them all using 'go install' -if [[ "$GO_INSTALL_COMMANDS" != "." ]]; then # "." is used as a default - #allows for multiple cmds using | - INPUT_ARR=( $GO_INSTALL_COMMANDS ) - for i in "${INPUT_ARR[@]}"; do - echo "Installing go command from ${i}" - if go install ${i}; then - echo "Command setup for ${i}" - else - echo "FATAL: Unable to install ${i} with go" - exit 1 - fi - done -fi \ No newline at end of file +installCommands \ No newline at end of file