feat: Support for drop-in completions

`shell_config.sh` has support for tool completions using the
`write_completion_snippet` and `write_alias_snippet`
This commit is contained in:
2026-06-27 07:58:10 +05:30
parent f158c4e913
commit 15d3a1a59d
3 changed files with 36 additions and 8 deletions

View File

@@ -158,6 +158,34 @@ remove_alias_snippet() {
fi
}
# Write completion snippet to completions.d/
# Usage: write_completion_snippet <name> <content>
write_completion_snippet() {
local name="$1"
local content="$2"
local dir="${BOOTSTRAP_DIR:-$HOME/.config/bootstrap}/completions.d"
mkdir -p "$dir"
log_info "Writing completion snippet '$name' to $dir/${name}.sh"
echo "$content" > "$dir/${name}.sh"
if type add_rollback_cmd >/dev/null 2>&1; then
add_rollback_cmd "rm -f \"$dir/${name}.sh\""
fi
}
# Remove completion snippet from completions.d/
# Usage: remove_completion_snippet <name>
remove_completion_snippet() {
local name="$1"
local dir="${BOOTSTRAP_DIR:-$HOME/.config/bootstrap}/completions.d"
if [ -f "$dir/${name}.sh" ]; then
log_info "Removing completion snippet '$name'"
rm -f "$dir/${name}.sh"
fi
}
# Setup fd symlink for Debian/Ubuntu (fdfind -> fd)
create_fd_symlink() {
if ! has_command fd && has_command fdfind; then
@@ -176,8 +204,4 @@ source_bashrc() {
# Export functions and variables for subshells
export _LIB_SHELL_CONFIG_SOURCED=1
export -f get_shell_configs remove_block inject_block add_alias_if_missing add_env_if_missing create_fd_symlink write_env_snippet write_alias_snippet remove_env_snippet remove_alias_snippet source_bashrc
export -f get_shell_configs remove_block inject_block add_alias_if_missing add_env_if_missing create_fd_symlink write_env_snippet write_alias_snippet remove_env_snippet remove_alias_snippet write_completion_snippet remove_completion_snippet source_bashrc