backlog-md/completions/backlog.bash

63 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Bash completion script for backlog CLI
#
# NOTE: This script is embedded in the backlog binary and installed automatically
# via 'backlog completion install'. This file serves as reference documentation.
#
# Installation:
# - Recommended: backlog completion install --shell bash
# - Manual: Copy to /etc/bash_completion.d/backlog
# - Or source directly in ~/.bashrc: source /path/to/backlog.bash
#
# Requirements:
# - Bash 4.x or 5.x
# - bash-completion package (optional but recommended)
# Main completion function for backlog CLI
_backlog() {
# Initialize completion variables using bash-completion helper if available
# Falls back to manual initialization if bash-completion is not installed
local cur prev words cword
if declare -F _init_completion >/dev/null 2>&1; then
_init_completion || return
else
# Manual initialization fallback
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
words=("${COMP_WORDS[@]}")
cword=$COMP_CWORD
fi
# Get the full command line and cursor position
local line="${COMP_LINE}"
local point="${COMP_POINT}"
# Call the CLI's internal completion command
# This delegates all completion logic to the TypeScript implementation
# Output format: one completion per line
local completions
completions=$(backlog completion __complete "$line" "$point" 2>/dev/null)
# Check if the completion command failed
if [[ $? -ne 0 ]]; then
# Silent failure - completion should never break the shell
return 0
fi
# Generate completion replies using compgen
# -W: wordlist - splits completions by whitespace
# --: end of options
# "$cur": current word being completed
COMPREPLY=( $(compgen -W "$completions" -- "$cur") )
# Return success
return 0
}
# Register the completion function for the 'backlog' command
# -F: use function for completion
# _backlog: name of the completion function
# backlog: command to complete
complete -F _backlog backlog