summaryrefslogblamecommitdiffstats
path: root/bash_completion
blob: ec248c11f885751fecf03582e553a9e3f3414228 (plain) (tree)
1
2
3
4
5
6
7
8


                                             
                                                                



                                                                          




                                                                             
                                                         
 

                
                         
                                                                       

 
                   
 
                                       




                                    
                        
                                                                       
                                                                              
                                                                           
 
                                                    
                                     

                                                        
      

                                                   

                                        
                                                         
                    
      
 





                                                                            
                                   
                                 

                        
                
                                                                                                

                  
                              
                                                                               
                  

               
                 
                        
                
                                                                                                

                  
                              
                                                                               
                  
               
             
                
                                                                                              
             
               
                                                                                                
             
             

                        
                                                              
                  
                          
                                                                                                
                  
                          
                  
               
                              
                                                                                                                                                                          
                  

               
             
                         
                                                                       
             
              

                        
                                                                                                

                  
                                                                                                                      

                  
             


                        
                                                                              
                  
               
                              
                                                                                        
                  

               
              

                        
                                                          

                           
                                                             

                  
                                                                                                                                           

                  

             
                                                      
                                                                       
             
               
                                                                                                                                                
             


                        
                                                                              
                  
                
                  


                                                             
               
                              
                                                                                           
                  

               
             













                                                                                                                                                                  
             









                                                              
                      
                                                                                 

                
                         
                                                                                  

             
                                                                                                                       

             






                                                                                                                                                                     



                        
                                                              
                  

                   
               
                                                                                                                                                                                                          


                  
                      
                        
                
                                                                                                

                  
                              
                                                                               


                  
               
                        
                
                                                                                   

                  
                                                             


                  
               
                                                                
             
              
                        
                            
                                 
                  

                    
               
                              
                                                                                                                   


                  
                 

                                                        
                  
                                                                                 
             
                         
             


            
 


                                                                         

                                                             
                                     

                                                        
#-*- mode: shell-script;-*-

# Programmed completion for bash to use quilt
# Copyright 2003-2004 Martin Quinson (martin quinson#debian org)

# This file is part of the distribution of quilt, and is distributed under
# the same licence than quilt itself

# WARNING: This script doesn't read user or system quiltrc files, and assumes
# that QUILT_PC is left unchanged. If you have changed QUILT_PC and want
# completion to work then you must set QUILT_PC in your global environment
# (for example in ~/.profile) and not just in your quiltrc file.

# Complete on files (by default) or directories (with -d)
#
_quilt_comfile()
{
	local IFS=$'\t\n'
	COMPREPLY=( "${COMPREPLY[@]}" $( compgen ${1:--f} -- "$cur" ) )
}

_quilt_completion()
{
    local cur prev cmds command_matches

    COMPREPLY=()
    cur=${COMP_WORDS[COMP_CWORD]}
    prev=${COMP_WORDS[COMP_CWORD-1]}

    # quilt sub commands
    cmds='add annotate applied delete diff edit files fold fork graph \
	  grep header import mail new next patches pop previous push refresh \
	  remove rename revert series setup snapshot top unapplied upgrade'

    # if no command were given, complete on commands
    if [[ $COMP_CWORD -eq 1 ]] ; then
	COMPREPLY=( $( compgen -W "$cmds -h" -- $cur ) )
	return 0
    fi

    # if we're completing for 'quilt -h', then just
    # complete on any valid command
    if [ ${COMP_WORDS[1]} == -h ] ; then
	    COMPREPLY=( $( compgen -W "$cmds" -- $cur ) )
	    return 0
    fi

    # Accept a partial command if it's unique, because quilt will accept it.
    command_matches=( $(compgen -W "$cmds" -- ${COMP_WORDS[1]}) )
    if [ ${#command_matches[@]} -ne 1 ] ; then
	return 0
    fi

    # Complete depending on options
    case ${command_matches[0]} in
	add)
	   case $prev in
	     -P)
		COMPREPLY=( $( compgen -W "$(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
		;;
	     *)
		_quilt_comfile
		COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-P -h" -- $cur ) )
		;;
	   esac
	   ;;
	annotate)
	   case $prev in
	     -P)
		COMPREPLY=( $( compgen -W "$(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
		;;
	     *)
		_quilt_comfile
		COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-P -h" -- $cur ) )
		;;
	   esac
	   ;;
	applied)
	   COMPREPLY=( $( compgen -W "-h $(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
	   ;;
	delete)
	   COMPREPLY=( $( compgen -W "-n -r -h --backup $(quilt --quiltrc - series)" -- $cur ) )
	   ;;
	diff)
	   case $prev in
	     -p)
		COMPREPLY=( $( compgen -W "0 1 ab" -- $cur ) )
		;;
	     -P|--combine)
		COMPREPLY=( $( compgen -W "$(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
		;;
	     --diff|-U|-C)
		;;
	     *)
		_quilt_comfile
		COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-p -P -u -U -c -C -R -z -h --snapshot --diff --no-timestamps --no-index --combine --color --sort" -- $cur ) )
		;;
	   esac
	   ;;
	edit)
	   _quilt_comfile
	   COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-h" -- $cur ) )
	   ;;
	files)
	   case $prev in
	     --combine)
		COMPREPLY=( $( compgen -W "$(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
		;;
	     *)
		COMPREPLY=( $( compgen -W "-a -l -v -h --combine $(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
		;;
	   esac
	   ;;
	fold)
	   case $prev in
	     -p)
		COMPREPLY=( $( compgen -W "0 1 2 3 4 5 6 7 8 9 10" -- $cur ) )
		;;
	     *)
		_quilt_comfile
		COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-R -q -f -p -h" -- $cur ) )
		;;
	   esac
	   ;;
	graph)
	   case $prev in
	     -T)
		COMPREPLY=( $( compgen -W "ps" -- $cur ) )
		;;
	     --edge-labels)
		COMPREPLY=( $( compgen -W "files" -- $cur ) )
		;;
	     *)
		COMPREPLY=( $( compgen -W "-T -h --all --reduce --lines --edge-labels $(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
		;;
	   esac
	   ;;
	grep)
	   type _longopt &> /dev/null && _longopt grep
	   COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-h" -- $cur ) )
	   ;;
	header)
	   COMPREPLY=( $( compgen -W "-a -e -h -r --backup --strip-diffstat --strip-trailing-whitespace $(quilt --quiltrc - series)" -- $cur ) )
	   ;;
	import)
	   case $prev in
	     -p)
		COMPREPLY=( $( compgen -W "0 1 2 3 4 5 6 7 8 9 10" -- $cur ) )
		;;
	     -P)
		;;
	     -d)
		COMPREPLY=( $( compgen -W "o a n" -- $cur ) )
		;;
	     *)
		_quilt_comfile
		COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-p -R -P -f -d -h" -- $cur ) )
		;;
	   esac
	   ;;
	mail)
	   case $prev in
	     --mbox|-M)
		_quilt_comfile
		;;
	     --signature)
		_quilt_comfile
		COMPREPLY=( "${COMPREPLY[@]}" - )
		;;
	     --prefix|--sender|--from|--subject|--to|--cc|--bcc|--charset|--reply-to)
		;;
	     *)
		COMPREPLY=( $( compgen -W "-m -M --prefix --mbox --send --sender --from --subject --to --cc --bcc --charset --signature --reply-to -h" -- $cur ) )
		;;
	   esac
	   ;;
	new)
	   case $prev in
	     -p)
		COMPREPLY=( $( compgen -W "0 1 ap" -- $cur ) )
		;;
	     *)
		COMPREPLY=( $( compgen -W "-p -h" -- $cur ) )
		;;
	   esac
	   ;;
	next|previous)
	   COMPREPLY=( $( compgen -W "$(quilt --quiltrc - series) -h" -- $cur ) )
	   ;;
	patches)
	   _quilt_comfile
	   COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-v --color -h" -- $cur ) )
	   ;;
	pop)
	   COMPREPLY=( $( compgen -W "-a -f -R -q -v --refresh -h $(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
	   ;;
	push)
	   case $prev in
	     --fuzz)
		;;
	     *)
		COMPREPLY=( $( compgen -W "-a -f -q -v -h --fuzz -m --merge --leave-rejects --color --refresh $(quilt --quiltrc - unapplied 2>/dev/null)" -- $cur ) )
		;;
	   esac
	   ;;
	refresh)
	   case $prev in
	     -p)
		COMPREPLY=( $( compgen -W "0 1 ap" -- $cur ) )
		;;
	     -U|-C)
		;;
	     *)
		COMPREPLY=( $( compgen -W "-p -u -U -c -C -z -f -h $(quilt --quiltrc - applied 2>/dev/null) --no-timestamps --no-index --diffstat --sort --backup --strip-trailing-whitespace" -- $cur ) )
		;;
	   esac
	   ;;
	remove|revert)
	   case $prev in
	     -P)
		COMPREPLY=( $( compgen -W "$(quilt --quiltrc - applied 2>/dev/null)" -- $cur ) )
		;;
	     *)
		_quilt_comfile
		COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-P -h" -- $cur ) )
		;;
	   esac
	   ;;
	rename)
	   case $prev in
	     -P)
		COMPREPLY=( $( compgen -W "$(quilt --quiltrc - series)" -- $cur ) )
		;;
	     *)
		COMPREPLY=( $( compgen -W "-P -h" -- $cur ) )
		;;
	   esac
	   ;;
	series)
	   COMPREPLY=( $( compgen -W "-v -h --color" -- $cur ) )
	   ;;
	setup)
	   case $prev in
	     -d|--sourcedir)
		_quilt_comfile -d
		;;
	     --fuzz)
		;;
	     *)
		_quilt_comfile
		COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "-d -v -h --sourcedir --fuzz --slow --fast" -- $cur ) )
		;;
	   esac
	   ;;
	snapshot)
	   COMPREPLY=( $( compgen -W "-d -h" -- $cur ) )
	   ;;
	unapplied)
	   COMPREPLY=( $( compgen -W "-h $(quilt --quiltrc - series)" -- $cur ) )
	   ;;
	fork|top|upgrade)
	   ;;
    esac
    return 0
}

# With option "filenames", directories are shown in completion with their
# trailing / so that the user can go in them.
#
[ ${BASH_VERSINFO[0]} '>' 2 -o \
  ${BASH_VERSINFO[0]}  =  2 -a ${BASH_VERSINFO[1]} '>' 04 ] \
&& _quilt_complete_opt="-o filenames"
complete -F _quilt_completion $_quilt_complete_opt quilt
unset -v _quilt_complete_opt