1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #!/usr/bin/env bash
- # Copyright (c) 2020, Eric Pailleau <crownedgrouse@wanadoo.fr>
- # This file is part of erlang.mk and subject to the terms of the ISC License.
- # Date: April 12th 2020
- # Bash completion for Erlang.mk
- _erlang_mk()
- {
- local cur prev words cword
- _init_completion || return
- T=$(make list-templates | cut -d ':' -f 2-)
- TP=$(echo -n $T | cut -d '_' -f 1 | tr ' ' '|')
- TPP=$(echo -n $T | tr ' ' '|')
- case $prev in
- make)
- COMPREPLY=( $(compgen -W "all app deps fetch-deps list-deps search rel docs install-docs check tests clean distclean help erlang-mk bootstrap bootstrap-lib bootstrap-rel new-app new-lib new new list-templates ct plt dialyze escript eunit shell sphinx xref cover-report all.coverdata" -- "$cur") )
- ;;
- search)
- COMPREPLY=( $(compgen -W 'q=' -- "$cur") ) && compopt -o nospace
- ;;
- new-app|new-lib)
- COMPREPLY=( $(compgen -W 'in=' -- "$cur") ) && compopt -o nospace
- ;;
- new)
- COMPREPLY=( $(compgen -W 't=' -- "$cur") ) && compopt -o nospace
- ;;
- =)
- if [[ ${words[$cword - 2]} == "in" ]]; then
- COMPREPLY=( $(compgen -W "$(ls apps 2>/dev/null)" -- "$cur") ) && compopt -o nospace
- else
- if [[ ${words[$cword - 2]} == "t" ]]; then
- COMPREPLY=( $(compgen -W "$T" -- "$cur") ) && compopt -o nospace
- fi
- fi
- ;;
- $TP)
- COMPREPLY=( $(compgen -W "$T" -- "$cur") ) && compopt -o nospace
- ;;
- $TPP)
- COMPREPLY=( $(compgen -W 'n=' -- "$cur") ) && compopt -o nospace
- ;;
- *)
- if [[ "$prev" == "in" && "$cur" == '=' ]]; then
- test -d apps && echo 1>&2
- test -d apps && echo $(ls apps 2>/dev/null)
- COMPREPLY=( $(compgen -W "$(ls apps 2>/dev/null )" -- "$cur") ) && compopt -o nospace
- fi
- if [[ "$prev" == "t" && "$cur" == '=' ]]; then
- echo 1>&2
- echo $T 1>&2
- COMPREPLY=( $(compgen -W "$T" -- "$cur") ) && compopt -o nospace
- fi
- if [[ $(echo "$T" | tr ' ' "\n" | grep "$prev") ]]; then
- COMPREPLY=( $(compgen -W 'n=' -- "$cur") ) && compopt -o nospace
- fi
- if [[ ${words[$cword - 1]} == "n=" || ${words[$cword - 1]} == "n" ]]; then
- COMPREPLY=( $(compgen -W 'in=' -- "$cur") ) && compopt -o nospace
- fi
- if [[ ${words[$cword - 3]} == "n" ]]; then
- COMPREPLY=( $(compgen -W 'in=' -- "$cur") ) && compopt -o nospace
- fi
- ;;
- esac
- case $cur in
- all|bootstrap|list|list-|new|new-)
- echo 1>&2
- make help | grep "^ $cur" 1>&2
- return
- ;;
- esac
- } &&
- complete -F _erlang_mk make
|