Author: kwilliams
Date: Sat Aug 12 05:56:10 2006
New Revision: 6788

Added:
   Module-Build/trunk/contrib/
   Module-Build/trunk/contrib/bash_completion.module-build
Modified:
   Module-Build/trunk/Changes

Log:
Add bash completion function

Modified: Module-Build/trunk/Changes
==============================================================================
--- Module-Build/trunk/Changes  (original)
+++ Module-Build/trunk/Changes  Sat Aug 12 05:56:10 2006
@@ -10,6 +10,9 @@
 
  - Upgraded to version 0.67 of version.pm. [John Peacock]
 
+ - Added a contrib/ directory with a bash completion function for M::B
+   actions and switches. [Julian Mehnle]
+
 0.2805  Sat Jul 29 22:01:24 CDT 2006
 
  - We now embed a copy of version.pm right in the

Added: Module-Build/trunk/contrib/bash_completion.module-build
==============================================================================
--- (empty file)
+++ Module-Build/trunk/contrib/bash_completion.module-build     Sat Aug 12 
05:56:10 2006
@@ -0,0 +1,39 @@
+# Module::Build Bash completion function
+# Contributed by Julian Mehnle <[EMAIL PROTECTED]>
+# $Id$
+# vim:syn=sh
+
+if
+    actions=$(
+        perl -M'Module::Build' -le 'print foreach 
Module::Build->known_actions' 2>/dev/null
+    ) && 
+    properties=$(
+        perl -M'Module::Build' -le 'print foreach sort 
Module::Build->valid_properties' 2>/dev/null
+    )
+then
+    eval "_Build_actions () { echo '$actions'; }"
+    eval "_Build_properties () { echo '$properties'; }"
+    unset -v actions properties
+    
+    _Build () {
+        local word=${COMP_WORDS[COMP_CWORD]}
+        #local prev_word=${COMP_WORDS[COMP_CWORD-1]}
+        #local action=${COMP_WORDS[1]}
+        
+        if (( $COMP_CWORD == 1 )); then
+            # Complete actions:
+            local IFS_org="$IFS"
+            IFS=$'\x1F\t\n'
+                # Avoid space (\x20) as a word separator to make the following 
-S ' ' work.
+            COMPREPLY=($( compgen -W "$(_Build_actions)" -S ' ' -- "$word" ))
+            IFS="$IFS_org"
+        else
+            # Complete properties:
+            COMPREPLY=($( compgen -W "$(_Build_properties)" -S = -- "$word" ))
+        fi
+        
+        return 0
+    }
+    
+    complete -o nospace -F _Build Build
+fi

Reply via email to