Merge pull request #249 from websi/capistrano

Add bash completion support for Capistrano
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 <tab> 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
diff --git a/plugins/available/osx.plugin.bash b/plugins/available/osx.plugin.bash
index fde9c83..5b605ce 100644
--- a/plugins/available/osx.plugin.bash
+++ b/plugins/available/osx.plugin.bash
@@ -11,7 +11,7 @@
     end
     tell application "Terminal"
       activate
-      do script with command "cd \"$PWD\"; $*" in window 1
+      do script with command " cd \"$PWD\"; $*" in window 1
     end tell
 EOF
 }
diff --git a/themes/pure/pure.theme.bash b/themes/pure/pure.theme.bash
new file mode 100644
index 0000000..eaeb765
--- /dev/null
+++ b/themes/pure/pure.theme.bash
@@ -0,0 +1,43 @@
+# scm theming
+SCM_THEME_PROMPT_PREFIX="|"
+SCM_THEME_PROMPT_SUFFIX=""
+
+SCM_THEME_PROMPT_DIRTY=" ${bold_red}✗${normal}"
+SCM_THEME_PROMPT_CLEAN=" ${green}✓${normal}"
+SCM_GIT_CHAR="${green}±${normal}"
+SCM_SVN_CHAR="${bold_cyan}⑆${normal}"
+SCM_HG_CHAR="${bold_red}☿${normal}"
+
+### TODO: openSUSE has already colors enabled, check if those differs from stock
+# LS colors, made with http://geoff.greer.fm/lscolors/
+# export LSCOLORS="Gxfxcxdxbxegedabagacad"
+# export LS_COLORS='no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.lzma=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:'
+
+scm_prompt() {
+    CHAR=$(scm_char) 
+    if [ $CHAR = $SCM_NONE_CHAR ] 
+        then 
+            return
+        else 
+            echo "[$(scm_char)$(scm_prompt_info)]"
+    fi 
+}
+
+pure_prompt() {
+    ps_host="${bold_blue}\h${normal}";
+    ps_user="${green}\u${normal}";
+    ps_user_mark="${green} $ ${normal}";
+    ps_root="${red}\u${red}";
+    ps_root="${red} # ${normal}"
+    ps_path="${yellow}\w${normal}";
+
+    # make it work
+    case $(id -u) in
+        0) PS1="$ps_root@$ps_host$(scm_prompt):$ps_path$ps_root_mark"
+            ;;
+        *) PS1="$ps_user@$ps_host$(scm_prompt):$ps_path$ps_user_mark"
+            ;;
+    esac
+}
+
+PROMPT_COMMAND=pure_prompt;