#!/usr/bin/env bash # Copyright (c) 2020, Eric Pailleau # 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