From cccbca7382301270cc48ec4c52d0972a9de294a2 Mon Sep 17 00:00:00 2001 From: Luis Mondesi Date: Wed, 3 Dec 2025 18:40:08 -0500 Subject: [PATCH] fix: teleport complete --- share/shell/bashrc | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/share/shell/bashrc b/share/shell/bashrc index 6191df1..4e87fd5 100644 --- a/share/shell/bashrc +++ b/share/shell/bashrc @@ -133,6 +133,33 @@ if [[ 1 == $USE_BASH_COMPLETION ]]; then for cmd in gitbranchdelete gitbranchrename gitcheckout vco; do complete -F __my_git_complete_heads $cmd done + + __tsh_alias_complete() { + local cur aliases_file aliases + aliases_file="$HOME/.tsh/config/config.yaml" + cur="${COMP_WORDS[COMP_CWORD]}" + + if [[ -r "$aliases_file" ]]; then + # Prefer yq if installed + if command -v yq >/dev/null 2>&1; then + # yq v4 syntax + aliases="$(yq e '.aliases | keys | .[]' "$aliases_file" 2>/dev/null)" + else + # Portable awk fallback: lines like "alias": "..." + aliases="$( + awk -F'"' ' + # match lines that start with optional spaces then "name": + /^[[:space:]]*"[A-Za-z0-9_.-]+":[[:space:]]*/ { print $2 } + ' "$aliases_file" + )" + fi + fi + + COMPREPLY=( $(compgen -W "$aliases" -- "$cur") ) + } + + # Complete the first argument to `tsh` using the aliases above + complete -F __tsh_alias_complete tsh fi # at this point is a good time to cleanup our PATH from dups