From a18b8506a4f107c59f5585cb83c7e5780700d09f Mon Sep 17 00:00:00 2001 From: Lockszmith Date: Mon, 29 Apr 2024 23:22:05 -0400 Subject: [PATCH 1/4] revamped fix-kubectl --- fix-kubectl | 59 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/fix-kubectl b/fix-kubectl index d4c7cc7..18ce27e 100755 --- a/fix-kubectl +++ b/fix-kubectl @@ -1,11 +1,26 @@ #! /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}")" +# shellcheck disable=SC2034,SC1090 +# SC2034 variables appear unsued. export if used externally +# - uneeded, as this checked whether script is sourced +# SC1090 Can't follow non-constant source -BASE_0="$(basename ${0#-})" -BASE_SHELL="$(basename "$SHELL")" -if [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then +# Helper function +is_sourced() { + if [ -n "$ZSH_VERSION" ]; then + case $ZSH_EVAL_CONTEXT in *:file:*) return 0;; esac + else # Add additional POSIX-compatible shell names here, if needed. + case ${0##*/} in dash|-dash|bash|-bash|ksh|-ksh|sh|-sh) return 0;; esac + fi + return 1; # NOT sourced. +} + +BASE_0=${BASE_0:-$0} +BASE_SHELL=$(basename "$SHELL") +if is_sourced; then + DBG_="Is Sourced" + SCRIPT_DIR=$( cd -- "$( dirname -- "${BASE_0}" )" &> /dev/null && pwd ) + USER_HOME=$HOME + [[ -n "${SUDO_USER}" ]] && USER_HOME="$(eval "echo ~${SUDO_USER}")" [[ -n "$KUBECONFIG" && -r "$KUBECONFIG" ]] || unset KUBECONFIG @@ -13,14 +28,16 @@ if [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then || 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 + (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 + (unset kubectl-fix 2> /dev/null) || true - if [[ -n "$(type -t 'k3s')" && -z "$(type -t 'kubectl')" ]]; then + DBG_="Check if k3s exists, but kubectl isn't available" + if (type 'k3s' >/dev/null 2>&1) && ! (type 'kubectl' >/dev/null 2>&1); then + DBG_="Define kubectl" if [[ -r "${KUBECONFIG}" ]]; then kubectl() { k3s kubectl "${@}"; } elif [[ -n "${KUBECONFIG}" && -e "${KUBECONFIG}" ]]; then @@ -31,19 +48,19 @@ if [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then sudo install --mod 600 --owner \"$USER\" \"\${KUBECONFIG}\" \"$HOME/.kube/config\" unset KUBECONFIG fi - FIX_KUBECTL_RECALL=1 . \"$SCRIPT_FULL_PATH\" + FIX_KUBECTL_RECALL=1 . \"${SCRIPT_DIR}/${BASE_0}\" }" fi fi - if [[ -n "$(type -t 'kubectl')" ]]; then + if (type 'kubectl' >/dev/null 2>&1); then - . <( kubectl completion ${SHELL##*/} ) + . <( kubectl completion "${BASE_SHELL}" ) - if [[ -n "$(type -t 'kubectl-cnpg')" ]]; then - . <( kubectl cnpg completion ${SHELL##*/} ) + if (type 'kubectl-cnpg' >/dev/null 2>&1 ); then + . <( kubectl cnpg completion "${BASE_SHELL}" ) fi - if [[ -z "$(type -t 'kubectl-cnpg')" || -n "$UPGRADE" ]]; then + if ! (type 'kubectl-cnpg' >/dev/null 2>&1) || [[ -n "$UPGRADE" ]]; then DL_VER=1.22.0 GH_URL=https://github.com/cloudnative-pg/cloudnative-pg DL_FILE="kubectl-cnpg_${DL_VER}_linux_x86_64.deb" @@ -54,7 +71,7 @@ if [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then " sudo dpkg -i $DL_FILE" fi - if [[ -z "$(type -t 'kubetui')" || -n "$UPGRADE" ]]; then + if ! (type 'kubetui' >/dev/null 2>&1) || [[ -n "$UPGRADE" ]]; then DL_VER=1.5.0 GH_URL=https://github.com/sarub0b0/kubetui DL_FILE=kubetui-x86_64-unknown-linux-musl-rustls @@ -65,26 +82,26 @@ if [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then " chmod +x ~/bin/kubetui" fi - if [[ -z "$(type -t 'k9s')" || -n "$UPGRADE" ]]; then + if ! (type 'k9s' >/dev/null 2>&1) || [[ -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 + if (type 'k3s' >/dev/null 2>&1 ); then . <( k3s completion "${SHELL##*/}" ) fi - if [[ -n "$(type -t 'helm')" ]]; then + if (type 'helm' >/dev/null 2>&1); then . <( helm completion "${SHELL##*/}" 2>/dev/null ) fi kg() { - kubectl get ${NS:+--namespace=}${NS:---all-namespaces} "${@}" | { sed -u 1q; sort; } + 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'" + printf 'BASE_0="%s"\n' "${BASE_0}" cat "${BASH_SOURCE[0]}" else SCRIPT_NAME="$BASE_0" From 367e6345273bf44bdd3fc4bcceb294cbc19e0a16 Mon Sep 17 00:00:00 2001 From: Lockszmith Date: Mon, 29 Apr 2024 23:23:19 -0400 Subject: [PATCH 2/4] revamped load-fzf and load-zellij --- load-fzf | 24 +++++++++++++++++++++--- load-zellij | 31 +++++++++++++++++++++++++------ 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/load-fzf b/load-fzf index 0586d36..7fe4cc9 100755 --- a/load-fzf +++ b/load-fzf @@ -1,7 +1,21 @@ #! /usr/bin/env bash +# shellcheck disable=SC2034,SC1090 +# SC2034 variables appear unsued. export if used externally +# - uneeded, as this checked whether script is sourced +# SC1090 Can't follow non-constant source -BASE_0="$(basename ${0#-})" -BASE_SHELL="$(basename "$SHELL")" +# Helper function +is_sourced() { + if [ -n "$ZSH_VERSION" ]; then + case $ZSH_EVAL_CONTEXT in *:file:*) return 0;; esac + else # Add additional POSIX-compatible shell names here, if needed. + case ${0##*/} in dash|-dash|bash|-bash|ksh|-ksh|sh|-sh) return 0;; esac + fi + return 1; # NOT sourced. +} + +BASE_0=${BASE_0:-$0} +BASE_SHELL=$(basename "$SHELL") if [[ "$1" == "--force" ]]; then [[ -e ~/.local/bin/fzf ]] && rm ~/.local/bin/fzf @@ -12,11 +26,12 @@ fi if [[ -z "$(type -t fzf)" || ! -e "$(type -p fzf)" ]]; then curl -sS https://webi.sh/fzf | bash >&2 + # shellcheck disable=SC2016 # $ inside single quotes is intentional printf '%s\n' \ 'Run the following and then try again:' \ ' exec $SHELL -l' \ '' >&2 -elif [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then +elif is_sourced; then FZF_CTRL_T_COMMAND="command find -L . -xdev -mindepth 1 \\( \ -path '*/\\.*' \ @@ -28,6 +43,9 @@ elif [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then -o -type l -print 2> /dev/null | cut -b3- \ " + # shellcheck disable=SC2034 + # variable appears unsued. export if used externally + # - uneeded, as script is sourced FZF_ALT_C_COMMAND="command find -L . -xdev -mindepth 1 \\( \ -path '*/\\.*' \ -xdev \ diff --git a/load-zellij b/load-zellij index 4b34b25..a46e394 100755 --- a/load-zellij +++ b/load-zellij @@ -1,9 +1,19 @@ #! /usr/bin/env bash -BASE_0="$(basename ${0#-})" -BASE_SHELL="$(basename "$SHELL")" +# Helper function +is_sourced() { + if [ -n "$ZSH_VERSION" ]; then + case $ZSH_EVAL_CONTEXT in *:file:*) return 0;; esac + else # Add additional POSIX-compatible shell names here, if needed. + case ${0##*/} in dash|-dash|bash|-bash|ksh|-ksh|sh|-sh) return 0;; esac + fi + return 1; # NOT sourced. +} -if [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then +BASE_0=${BASE_0:-$0} +BASE_SHELL=$(basename "$SHELL") + +if is_sourced; then zellij() { if [[ -x /tmp/zellij/bootstrap/zellij ]]; then /tmp/zellij/bootstrap/zellij "${@}" @@ -11,13 +21,22 @@ if [[ -z "${BASE_0}" || "${BASE_0}" == "$BASE_SHELL" ]]; then bash <(curl -sL zellij.dev/launch) "${@}" fi } - . <( zellij setup --generate-completion "$BASE_SHELL" ) if [[ -z "$ZELLIJ_SESSION_NAME" ]]; then - (zellij list-sessions 2&>1) > /dev/null || zellij attach -c $USER@$(hostname) + # shellcheck disable=SC2210 + #(zellij list-sessions 2&>1) > /dev/null || zellij attach -c "$USER@$(hostname)" + zellij attach -c "$USER@$(hostname)" || EXITCODE=$? + + # shellcheck disable=SC2086 # EXITCODE might be empty + return $EXITCODE + fi + if [[ -z "$ZSH_VERSION" ]] || (type compdef > /dev/null 2>&1); then + # shellcheck disable=SC1090 + . <( zellij setup --generate-completion "$BASE_SHELL" ) 2> /dev/null fi elif [[ "$1" == '-' ]]; then - cat "${BASH_SOURCE[0]}" + echo "BASE_0=${BASE_0}" + cat "${0}" else SCRIPT_NAME="$BASE_0" printf '%s\n' \ From 91aa9853ebadafba42bf5f8358b3489ced8d91aa Mon Sep 17 00:00:00 2001 From: Lockszmith Date: Mon, 29 Apr 2024 23:23:56 -0400 Subject: [PATCH 3/4] streamlined i-have-arrived --- i-have-arrived | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/i-have-arrived b/i-have-arrived index 643ab4f..3315c87 100755 --- a/i-have-arrived +++ b/i-have-arrived @@ -19,11 +19,12 @@ if [[ $USER == "$(sudo bash -c "echo \$SUDO_USER")" ]]; then sudo update-alternatives --remove vim.tiny /usr/bin/vim.tiny || true sudo apt update sudo apt remove vim-tiny - sudo apt install fzf neovim fd-find ripgrep - sudo apt install atool caca-utils figlet zip - sudo apt install --yes mediainfo exiftool mupdf-tools cmigemo dict dict-wn dictd libsixel-bin xsel - # sudo apt install w3m-el xdg-utils unoconv - sudo apt install --yes ranger + sudo apt install neovim + # sudo apt install fzf fd-find ripgrep + # sudo apt install atool caca-utils figlet zip + # sudo apt install --yes mediainfo exiftool mupdf-tools cmigemo dict dict-wn dictd libsixel-bin xsel + # # sudo apt install w3m-el xdg-utils unoconv + # sudo apt install --yes ranger echo "sudo section done." fi else From 86cc420d574498c84b4f1e4692d601f14dd3a7c1 Mon Sep 17 00:00:00 2001 From: Lockszmith Date: Mon, 29 Apr 2024 23:24:38 -0400 Subject: [PATCH 4/4] add load-starship --- load-starship | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 load-starship diff --git a/load-starship b/load-starship new file mode 100755 index 0000000..13d4487 --- /dev/null +++ b/load-starship @@ -0,0 +1,37 @@ +#! /usr/bin/env bash + +# Helper function +is_sourced() { + if [ -n "$ZSH_VERSION" ]; then + case $ZSH_EVAL_CONTEXT in *:file:*) return 0;; esac + else # Add additional POSIX-compatible shell names here, if needed. + case ${0##*/} in dash|-dash|bash|-bash|ksh|-ksh|sh|-sh) return 0;; esac + fi + return 1; # NOT sourced. +} + +BASE_0=${BASE_0:-$0} +BASE_SHELL=$(basename "$SHELL") + +if is_sourced; then + starship() { + if [[ ! -x "$HOME/bin/starship" ]]; then + curl -sS https://starship.rs/install.sh | FORCE=1 BIN_DIR="$HOME/bin" sh > /dev/null + fi + "$HOME/bin/starship" "${@}" + } + # shellcheck disable=SC1090 + . <( starship init "$BASE_SHELL" ) 2> /dev/null + +elif [[ "$1" == '-' ]]; then + echo "BASE_0=${BASE_0}" + cat "${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 +