
recalling the script would always fail because the script's path would not persist, passing the complete path into the source call (.) solved this issue.
96 lines
3.5 KiB
Bash
Executable file
96 lines
3.5 KiB
Bash
Executable file
#! /usr/bin/env bash
|
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
USER_HOME=$HOME
|
|
[[ -n "${SUDO_USER}" ]] && USER_HOME="$(eval "echo ~${SUDO_USER}")"
|
|
|
|
BASE_0="$(basename ${0#-})"
|
|
BASE_SHELL="$(basename "$SHELL")"
|
|
if [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then
|
|
|
|
[[ -n "$KUBECONFIG" && -r "$KUBECONFIG" ]] || unset KUBECONFIG
|
|
|
|
[[ ! -r "$HOME/.kube/config" ]] \
|
|
|| export KUBECONFIG="${KUBECONFIG:-$HOME/.kube/config}"
|
|
|
|
if [[ -z "$KUBECONFIG" && -z "$FIX_KUBECTL_RECALL" ]]; then
|
|
unset kubectl 2>/dev/null || unalias kubectl 2>/dev/null || true
|
|
|
|
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
|
|
fi
|
|
|
|
[[ 'function' == $(type -t kubectl-fix) ]] && unset kubectl-fix
|
|
|
|
if [[ -n "$(type -t 'k3s')" && -z "$(type -t 'kubectl')" ]]; then
|
|
if [[ -r "${KUBECONFIG}" ]]; then
|
|
kubectl() { k3s kubectl "${@}"; }
|
|
elif [[ -n "${KUBECONFIG}" && -e "${KUBECONFIG}" ]]; then
|
|
eval "
|
|
kubectl-fix() {
|
|
mkdir \"$HOME/.kube\" -p
|
|
if [[ -e \"\${KUBECONFIG}\" && ! -r \"$HOME/.kube/config\" ]]; then
|
|
sudo install --mod 600 --owner \"$USER\" \"\${KUBECONFIG}\" \"$HOME/.kube/config\"
|
|
unset KUBECONFIG
|
|
fi
|
|
FIX_KUBECTL_RECALL=1 . \"$SCRIPT_FULL_PATH\"
|
|
}"
|
|
fi
|
|
fi
|
|
|
|
if [[ -n "$(type -t 'kubectl')" ]]; then
|
|
|
|
. <( kubectl completion ${SHELL##*/} )
|
|
|
|
if [[ -n "$(type -t 'kubectl-cnpg')" ]]; then
|
|
. <( kubectl cnpg completion ${SHELL##*/} )
|
|
fi
|
|
if [[ -z "$(type -t 'kubectl-cnpg')" || -n "$UPGRADE" ]]; then
|
|
DL_VER=1.21.1
|
|
GH_URL=https://github.com/cloudnative-pg/cloudnative-pg
|
|
DL_FILE="kubectl-cnpg_${DL_VER}_linux_x86_64.deb"
|
|
URL=${GH_URL}/releases/download/v${DL_VER}/${DL_FILE}
|
|
printf '%s\n' \
|
|
'To download and install cnpg kubectl plugin, run:' \
|
|
" curl -sSLO ${URL}" \
|
|
" sudo dpkg -i $DL_FILE"
|
|
fi
|
|
|
|
if [[ -z "$(type -t 'kubetui')" || -n "$UPGRADE" ]]; then
|
|
DL_VER=1.4.2
|
|
GH_URL=https://github.com/sarub0b0/kubetui
|
|
DL_FILE=kubetui-x86_64-unknown-linux-musl-rustls
|
|
URL=${GH_URL}/releases/download/v${DL_VER}/${DL_FILE}
|
|
printf '%s\n' \
|
|
'To download and install kubetui, run:' \
|
|
" curl -sSL ${URL} > ~/bin/kubetui" \
|
|
" chmod +x ~/bin/kubetui"
|
|
fi
|
|
|
|
if [[ -z "$(type -t 'k9s')" || -n "$UPGRADE" ]]; then
|
|
printf '%s\n' \
|
|
'To download and install k9s, run:' \
|
|
" curl -sS https://webinstall.dev/k9s | bash"
|
|
fi
|
|
|
|
if [[ -n "$(type -t 'k3s')" ]]; then
|
|
. <( k3s completion "${SHELL##*/}" )
|
|
fi
|
|
|
|
if [[ -n "$(type -t 'helm')" ]]; then
|
|
. <( helm completion "${SHELL##*/}" 2>/dev/null )
|
|
fi
|
|
|
|
kg() {
|
|
kubectl get ${NS:+--namespace=}${NS:---all-namespaces} "${@}" | { sed -u 1q; sort; }
|
|
}
|
|
fi
|
|
elif [[ "$1" == '-' ]]; then
|
|
printf '%s\n' "SCRIPT_FULL_PATH='$SCRIPT_DIR/$BASE_0'"
|
|
cat "${BASH_SOURCE[0]}"
|
|
else
|
|
SCRIPT_NAME="$BASE_0"
|
|
printf '%s\n' \
|
|
"It seems $SCRIPT_NAME was invoked as a script. It should be sourced instead." \
|
|
'The easiest way is to call it like this:' \
|
|
" $ . <( $SCRIPT_NAME - ) # Note the '-' after the script's name" \
|
|
''
|
|
fi
|