dotfiles/_home.macos/private_dot_local/bin/executable_vast-teleport

79 lines
2.3 KiB
Bash

#!/usr/bin/env bash
# Usage: ./vast-teleport get version [auto|major|<vMajor>]
# Example: ./latest_teleport_version.sh get major
set -e
SCRIPT_NAME="${0##/*}"
usage() {
printf '%s\n' \
"${SCRIPT_NAME} command..." \
'' \
'Usage:' \
' get version same as running `tsh version`' \
' get version server grabs the version of the server' \
' get version server major grabs the major version of the server' \
' get version client 15 grabs the latest version of the client for major' \
" get version client auto grab the latest version based on the server's major version" \
'' \
" To update teleport's \`tsh\` with \`chezmoi\` run the following" \
' eval "$(vast-teleport get version server major -) czx status"' \
''
exit 2
}
get_server_version() {
curl -s https://teleport.vastdata.com:3080/webapi/ping \
| jq -r '.server_version'
}
get_server_major() {
get_server_version | awk -F. '{print $1}'
}
get_latest_version_by_major() {
local MAJOR="$1"
curl -s "https://api.github.com/repos/gravitational/teleport/releases?per_page=100" \
| jq -r ".[].tag_name" \
| grep -E "^v${MAJOR}\." \
| sort -V \
| tail -n 1
}
case "$1" in
get) shift; case $1 in
version) shift; case $1 in
'') tsh version ;;
server) shift; case $1 in
'') get_server_version ;;
major) shift; case $1 in
'') get_server_major ;;
'-') printf 'TELEPORT_MAJOR=' && get_server_major ;;
*) usage ;;
esac;;
*) usage ;;
esac ;;
client) shift; case $1 in
'') usage ;;
auto) get_latest_version_by_major "$(get_server_major)" ;;
*) get_latest_version_by_major "${@}" ;;
esac;;
*) usage ;;
esac;;
*) usage ;;
esac ;;
*) usage ;;
esac
# MAJOR="$1"
#
# if [[ -z "$MAJOR" ]]; then
# echo "Usage: $0 <major_version>"
# exit 1
# fi
#
# curl -s "https://api.github.com/repos/gravitational/teleport/releases?per_page=100" | \
# jq -r ".[].tag_name" | \
# grep -E "^v${MAJOR}\." | \
# sort -V | \
# tail -n 1