diff --git a/zsh/mygvm b/zsh/mygvm index e6f36b9..364be4e 100755 --- a/zsh/mygvm +++ b/zsh/mygvm @@ -1,18 +1,6 @@ #!/bin/bash - -uname_m=$(uname -m) -goarch='amd64' -if [[ $uname_m == 'arm64' || $uname_m == 'aarch64' ]]; then - goarch='arm64' -fi -goos='linux' -if [[ $(uname) == 'Darwin' ]]; then - goos='darwin' -fi -valid='false' -exists='false' list_versions() { - echo "valid options:" + echo "installed versions:" for i in "$HOME"/.go/go1*; do basename "$i"; done echo "" } @@ -21,8 +9,7 @@ install_version() { check_valid $1 if [[ $valid != 'true' ]]; then echo "invalid version $1" - echo "using" - go version + echo "using $(go version)" exit 1 fi @@ -49,23 +36,28 @@ check_valid() { valid='true' fi } + check_exists() { if [[ -d $HOME/.go/$1 ]]; then exists='true' fi } -check_exists $1 -if [[ $1 == '' ]]; then - list_versions - echo "using" - go version - exit 1 -elif [[ $1 == 'install' ]]; then - install_version $2 -elif [[ $exists == 'true' ]]; then - link_version $1 -else +remove_version() { + check_exists $1 + if [[ $exists == 'true' ]]; then + if [[ $current_link == $1 ]]; then + echo "cannot remove version $1 because it is currently in use" + else + rm -rf $HOME/.go/$1 + echo "removed version $1" + fi + else + echo "version $1 not installed" + fi +} + +prompt_install() { echo "$1 not found in $HOME/.go" list_versions check_valid $1 @@ -78,12 +70,48 @@ else fi else echo "invalid version $1" - echo "using" - go version + echo "using $(go version)" exit 1 fi +} + +mkdir -p "$HOME/.go/downloads" +current_link=$(basename $(readlink $HOME/.go/go)) +uname_m=$(uname -m) +goarch='amd64' +if [[ $uname_m == 'arm64' || $uname_m == 'aarch64' ]]; then + goarch='arm64' +fi +goos='linux' +if [[ $(uname) == 'Darwin' ]]; then + goos='darwin' +fi +valid='false' +exists='false' + +check_exists $1 +if [[ $1 == '' ]]; then + list_versions +elif [[ $1 == 'list' ]]; then + list_versions +elif [[ $1 == 'remove' ]]; then + remove_version $2 +elif [[ $1 == 'uninstall' ]]; then + remove_version $2 +elif [[ $1 == 'install' ]]; then + install_version $2 +elif [[ $1 == 'use' ]]; then + check_exists $2 + if [[ $exists == true ]]; then + link_version $2 + else + prompt_install $2 + fi +elif [[ $exists == 'true' ]]; then + link_version $1 +else + prompt_install $1 fi -echo "using" -go version +echo "using $(go version)"