#!/bin/bash # grunt-cli # http://gruntjs.com/ # # Copyright (c) 2016 Tyler Kellen, contributors # Licensed under the MIT license. # https://github.com/gruntjs/grunt/blob/master/LICENSE-MIT # Usage: # # To enable bash completion for grunt, add the following line (minus the # leading #, which is the bash comment character) to your ~/.bashrc file: # # eval "$(grunt --completion=bash)" # Search the current directory and all parent directories for a gruntfile. function _grunt_gruntfile() { local curpath="$PWD" while [[ "$curpath" ]]; do for gruntfile in "$curpath/"{G,g}runtfile.{js,coffee}; do if [[ -e "$gruntfile" ]]; then echo "$gruntfile" return fi done curpath="${curpath%/*}" done return 1 } # Enable bash autocompletion. function _grunt_completions() { # The currently-being-completed word. local cur="${COMP_WORDS[COMP_CWORD]}" # The current gruntfile, if it exists. local gruntfile="$(_grunt_gruntfile)" # The current grunt version, available tasks, options, etc. local gruntinfo="$(grunt --version --verbose 2>/dev/null)" # Options and tasks. local opts="$(echo "$gruntinfo" | awk '/Available options: / {$1=$2=""; print $0}')" local compls="$(echo "$gruntinfo" | awk '/Available tasks: / {$1=$2=""; print $0}')" # Only add -- or - options if the user has started typing - [[ "$cur" == -* ]] && compls="$compls $opts" # Tell complete what stuff to show. COMPREPLY=($(compgen -W "$compls" -- "$cur")) } complete -o default -F _grunt_completions grunt