# bash completion for ssr — System Sync & Restore. # Source from your ~/.bashrc or place under ~/.local/share/bash-completion/completions/ssr _ssr() { local cur prev words cword if declare -F _init_completion >/dev/null 2>&1; then _init_completion || return else COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" words=("${COMP_WORDS[@]}") cword=$COMP_CWORD fi local commands="install sync restore update schedule config completions status version help" local global_flags="-c --config -h --help" # Detect command (first non-flag word after `ssr`). local cmd="" local i for ((i = 1; i < cword; i++)); do case "${words[i]}" in -c|--config) ((i++)); continue ;; -*) continue ;; *) cmd="${words[i]}"; break ;; esac done # Handle --config . if [[ "$prev" == "-c" || "$prev" == "--config" ]]; then COMPREPLY=( $(compgen -f -- "$cur") ) return fi # Top-level command selection. if [[ -z "$cmd" ]]; then if [[ "$cur" == -* ]]; then COMPREPLY=( $(compgen -W "$global_flags" -- "$cur") ) else COMPREPLY=( $(compgen -W "$commands" -- "$cur") ) fi return fi # Per-command argument completion. case "$cmd" in restore) COMPREPLY=( $(compgen -f -- "$cur") ) ;; update) COMPREPLY=( $(compgen -W "--dry-run -n -h --help" -- "$cur") ) ;; schedule) COMPREPLY=( $(compgen -W "on off status" -- "$cur") ) ;; config) COMPREPLY=( $(compgen -W "show edit path" -- "$cur") ) ;; completions) COMPREPLY=( $(compgen -W "install uninstall status" -- "$cur") ) ;; *) COMPREPLY=() ;; esac } complete -F _ssr ssr