From: Travis Swicegood Date: Fri, 13 Dec 2013 23:21:08 +0000 (-0600) Subject: Add in Grunt auto-completion X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=b65e0d0e40360fba7ae1dbcf90060447e2b3d4c3;p=common%2Fbash_it.git Add in Grunt auto-completion --- diff --git a/completion/available/grunt.completion.bash b/completion/available/grunt.completion.bash new file mode 100644 index 0000000..99a96b5 --- /dev/null +++ b/completion/available/grunt.completion.bash @@ -0,0 +1,49 @@ +#!/bin/bash + +# grunt-cli +# http://gruntjs.com/ +# +# Copyright (c) 2012 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