53 lines
		
	
	
		
			828 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			828 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
#compdef abra
 | 
						|
 | 
						|
_abra () {
 | 
						|
	local context state line curcontext="$curcontext" ret=1
 | 
						|
	_arguments -n : \
 | 
						|
		{-h,--help}'[Help message]' \
 | 
						|
		'1:commands:(app server)' \
 | 
						|
		'*::arguments:->arguments' \
 | 
						|
		&& ret=0
 | 
						|
 | 
						|
	case $state in
 | 
						|
		(arguments)
 | 
						|
			curcontext="${curcontext%:*:*}:abra-arguments-$words[1]:"
 | 
						|
			case $words[1] in
 | 
						|
				(app)
 | 
						|
					_arguments \
 | 
						|
						'1: :_abra_apps' \
 | 
						|
					&& ret=0
 | 
						|
				;;
 | 
						|
				(server)
 | 
						|
					_arguments \
 | 
						|
						'1:servers:_abra_servers' \
 | 
						|
					&& ret=0
 | 
						|
				;;
 | 
						|
			esac
 | 
						|
		;;
 | 
						|
	esac
 | 
						|
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
_abra_servers() {
 | 
						|
	_path_files -/W $HOME/.abra/servers
 | 
						|
}
 | 
						|
 | 
						|
_abra_apps()
 | 
						|
{
 | 
						|
	local newapps apps=($HOME/.abra/servers/*/*.env)
 | 
						|
	typeset -a apps
 | 
						|
	newapps=()
 | 
						|
	for app in $apps; do
 | 
						|
		newapps+=($(_abra_basename "${app}"))
 | 
						|
	done
 | 
						|
	_describe -t apps 'app' newapps
 | 
						|
}
 | 
						|
 | 
						|
_abra_basename()
 | 
						|
{
 | 
						|
    printf -- "${1##*/}"
 | 
						|
}
 | 
						|
 | 
						|
_abra "$@"
 |