small pixel drawing of a pufferfish dotfiles

bin/chtf

#!/bin/sh
#
# list installed tf versions +
# switch terraform versions +
# + download tf if not found

tf_version="$1"
tf_install_dir="${HOME}/.local/share/chtf"
tf_link_name="${HOME}/bin/terraform"

# make some os assumptions
if [ "$(uname)" = "Linux" ]; then
    os="linux"
else
    os="darwin"
fi

mkdir -p "$tf_install_dir"

if [ -z "$tf_version" ]; then
    # if no arguments, list versions of tf plus list symlink pointer.
    printf "available:\n"
    ls "$tf_install_dir"
    printf "active:\n"
    if [ -e "$tf_link_name" ]; then
        readlink "$tf_link_name" | xargs basename
    fi
else
    if [ ! -f "${tf_install_dir}/${tf_version}" ]; then
        # download tf version if not found
        printf "terraform version not found. downloading...\n"
        dl="https://releases.hashicorp.com/terraform/${tf_version}/terraform_${tf_version}_${os}_amd64.zip"
        printf "downloading %s\n" "$dl"
        curl -L --output /tmp/tf.zip "$dl"
        unzip /tmp/tf.zip -d /tmp
        mv /tmp/terraform "${tf_install_dir}/${tf_version}"
        rm /tmp/tf.zip
    fi
    ln -sf "${tf_install_dir}/${tf_version}" "$tf_link_name"
fi