summaryrefslogblamecommitdiffstats
path: root/bash_completion
blob: bbcc63b4b6533a11155be6b53c36a3c1bad56e20 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11


                                             
                                                                   






                                                                          
                                           





                                                   



                                                                    
 
 











































                                                                            
                                     

                                                        




                                                    

                                                         


















                                                                               
                                                              








                                                                


                               

                         
                                                                                                                             


                  
             

                                                                       
             
              
                                                                 
             


                        
                                                           
                  


                                                                            

               









                                                                                                   

































                                                                                                                       
                                                                                          























                                                                               
                                                                                  


                  


                                                        




                                                                 

                 




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

# Programmed completion for bash to use quilt
# Copyright 2003-2004 Martin Quinson <martin.quinson@tuxfamily.org>

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

have quilt &&
_quilt()
{
    local skip_version_check version failed
    local i cur prev cmds patches pcount patch_nums

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

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


#    if [ "$(type -t patch_file_name)" != function ]
#    then
        if ! [ -r /usr/share/quilt/scripts/patchfns ]
	then
	  # Cannot read library /usr/share/quilt/scripts/patchfns
	  return 0
	fi
	
	# Check ourselves for the meta-data version to avoid getting the
	# shell killed when they don't match
        skip_version_check="pliz"
	
	. /usr/share/quilt/scripts/patchfns
		
	failed=""
        if [ -e $QUILT_PC/.version ] ; then
	  version="$(< $QUILT_PC/.version)"
	  if [ "$version" != "$DB_VERSION" ] ; then
	    failed=yes
	  fi
	else
	  failed=yes
	fi
#	echo "DB_VERSION=$DB_VERSION. version=$version. failed=$failed." >&2
	
  	# get infos we need from quilt about patches if possible
	if [ -z "$failed" ] ; then 
          patches=$(cat_series)
          pcount=`cat_series | wc -l`
          patch_nums=`i=0; while [[ ++i -le $pcount ]] ; do echo $i; done `
	fi
        # patchfns moved to the root directory. Back to where we were
        if [ -n "$SUBDIR" -a -d "$SUBDIR" ] ; then 
	  cd $SUBDIR; 
	fi
	if [ -n "$failed" ] ; then 
	  return 0;
	fi
#    fi
    				
    ## Go ahead for completions
    ##
    
    # 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
    
    # Complete depending on options
    case ${COMP_WORDS[1]} in
	add)
	   case $prev in
	     -p)
 	        COMPREPLY=( $( compgen -W "$patches" -- $cur ) )
		;;
	     *)
	        _filedir 
	        COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "-p -h" -- $cur ) )
	        ;;
	   esac
	   ;;
	applied) 
	   COMPREPLY=( $( compgen -W "-n -h $patches" -- $cur ) )
	   ;;
	delete) 
	   COMPREPLY=( $( compgen -W "-h $patches" -- $cur ) )
	   ;;
	diff) 
	   case $prev in
	     -p)
 	        COMPREPLY=( $( compgen -W "0 1" -- $cur ) )
		;;
	     -P|-c)
	     	COMPREPLY=( $( compgen -W "$patches" -- $cur ) )
		;;
	     --diff|--snapshot)
	        COMREPLY=(  )
		;;
	     *)
	        _filedir 
	        COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "-p -P -c -R -z -h --snapshot --diff --no-timestamps" -- $cur ) )
	        ;;
	   esac
	   ;;
	edit)
	   _filedir
	   COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "-h" -- $cur ) )
	   ;;
	files)
	   COMPREPLY=( $( compgen -W "-v -h $patches" -- $cur ) )
	   ;;
	fold)
	   case $prev in
	     -p)
	        COMPREPLY=( $( compgen -W "0 1" -- $cur ) )
		;;
	     *)
	        COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "-p" -- $cur ) )
	        ;;
	   esac
	   ;;
	fork)
	  COMPREPLY=( )
	  ;;
	graph)
	   COMPREPLY=( $( compgen -W "-h --all --reduce --lines --edge-labels $patches" -- $cur ) )
	   ;;
	grep)
	   _longopt grep
	   COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "-h" -- $cur ) )
	   ;;
	import)
	   case $prev in
	     -p)
 	        COMPREPLY=( $( compgen -W "0 1 2 3 4 5 6 7 8 9 10" -- $cur ) )
		;;
	     -n)
		;;
	     *)
	        _filedir 
	        COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "-p -n -f -h" -- $cur ) )
	        ;;
	   esac
	   ;;
	new)
	   ;;
	next|previous)
	   COMPREPLY=( $( compgen -W "-n $patches" -- $cur ) )
	   ;;
	patches)
	   _filedir 
	   COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "-v -n -h" -- $cur ) )
	   ;;
	pop)
	   COMPREPLY=( $( compgen -W "-a -f -R -q -v -h $patches $patch_nums" -- $cur ) )
	   ;;
	push)
	   COMPREPLY=( $( compgen -W "-a -f -R -q -v -h --leave-rejects --interactive $patches $patch_nums" -- $cur ) )
	   ;;
	refresh)
	   case $prev in
	     -p)
 	        COMPREPLY=( $( compgen -W "0 1" -- $cur ) )
		;;
	     *)
	     	COMPREPLY=( $( compgen -W "-p -f -h $patches  --no-timestamps" -- $cur ) )
		;;
	   esac
	   ;;
	remove)
	   case $prev in
	     -p)
 	        COMPREPLY=( $( compgen -W "$patches" -- $cur ) )
		;;
	     *)
	        _filedir 
	        COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "-p -h" -- $cur ) )
		;;
	   esac
	   ;;
	 series)
	   COMPREPLY=( $( compgen -W "-n -v -h" -- $cur ) )
	   ;;
	 setup)
	   case $prev in
	     -d)
	     	_filedir -d
		;;
	     *)
	        _filedir 
	        COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "-d -v -h" -- $cur ) )
		;;
	   esac
	   ;;
	 snapshot)
	   COMPREPLY=( $( compgen -W "-d -h" -- $cur ) )
	   ;;
	 top)
	   ;;
	 unapplied)
	   COMPREPLY=( $( compgen -W "-n -h $patches" -- $cur ) )
	   ;;
	 upgrade)
	   ;;
    esac
    return 0
}
[ "$have" ] && complete -F _quilt $filenames quilt