mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-10-31 10:39:59 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # This file implements bash completion for the ./yii command file.
 | |
| # It completes the commands available by the ./yii command.
 | |
| # See also:
 | |
| # - https://debian-administration.org/article/317/An_introduction_to_bash_completion_part_2 on how this works.
 | |
| # - https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html
 | |
| # - https://www.yiiframework.com/doc-2.0/guide-tutorial-console.html#bash-completion
 | |
| #
 | |
| # Usage:
 | |
| # Temporarily you can source this file in you bash by typing: source yii
 | |
| # For permanent availability, copy or link this file to /etc/bash_completion.d/
 | |
| #
 | |
| 
 | |
| _yii()
 | |
| {
 | |
|     local cur opts yii command
 | |
|     COMPREPLY=()
 | |
|     cur="${COMP_WORDS[COMP_CWORD]}"
 | |
|     prev="${COMP_WORDS[COMP_CWORD-1]}"
 | |
|     yii="${COMP_WORDS[0]}"
 | |
| 
 | |
|     # exit if ./yii does not exist
 | |
|     test -f $yii || return 0
 | |
| 
 | |
|     # lookup for command
 | |
|     for word in ${COMP_WORDS[@]:1}; do
 | |
|         if [[ $word != -* ]]; then
 | |
|             command=$word
 | |
|             break
 | |
|         fi
 | |
|     done
 | |
| 
 | |
|     [[ $cur == $command ]] && state="command"
 | |
|     [[ $cur != $command ]] && state="option"
 | |
|     [[ $cur = *=* ]] && state="value"
 | |
|     [[ $prev == "help" ]] && state="help"
 | |
| 
 | |
|     case $state in
 | |
|         command|help)
 | |
|             # complete command/route if not given
 | |
|             # fetch available commands from ./yii help/list command
 | |
|             opts=$($yii help/list 2> /dev/null)
 | |
|         ;;
 | |
|         option)
 | |
|             # fetch available options from ./yii help/list-action-options command
 | |
|             opts=$($yii help/list-action-options $command 2> /dev/null | grep -o '^--[a-zA-Z0-9\-]*')
 | |
|         ;;
 | |
|         value)
 | |
|             # TODO allow normal file completion after an option, e.g. --migrationPath=...
 | |
|         ;;
 | |
|     esac
 | |
| 
 | |
|     # generate completion suggestions
 | |
|     COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
 | |
|     return 0
 | |
| 
 | |
| }
 | |
| 
 | |
| # register completion for the ./yii command
 | |
| # you may adjust this line if your command file is named differently
 | |
| complete -o default -F _yii ./yii yii
 | 
