]> git.mjollnir.org Git - cil.git/commitdiff
Initial go at completion for 'cil'.
authorAndrew Chilton <andychilton@gmail.com>
Tue, 24 Jun 2008 11:30:29 +0000 (23:30 +1200)
committerAndrew Chilton <andychilton@gmail.com>
Tue, 24 Jun 2008 11:30:29 +0000 (23:30 +1200)
etc/bash_completion [new file with mode: 0644]

diff --git a/etc/bash_completion b/etc/bash_completion
new file mode 100644 (file)
index 0000000..921f8f0
--- /dev/null
@@ -0,0 +1,79 @@
+#
+# Bash Completion support for cil.
+#
+# Copyright (c) 2008 Andrew Chilton <andychilton@gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+__issues()
+{
+    ls -1 issues/i_*.cil 2>/dev/null | sed -e 's/^issues\/i_//; s/\.cil$//'
+}
+
+__comments()
+{
+    ls -1 issues/c_*.cil 2>/dev/null | sed -e 's/^issues\/c_//; s/\.cil$//'
+}
+
+__attachments()
+{
+    ls -1 issues/a_*.cil 2>/dev/null | sed -e 's/^issues\/a_//; s/\.cil$//'
+}
+
+_cil()
+{
+    local cur prev opts
+
+    # constants
+    opts="--help --version --path --status --label --filename"
+    commands="init add summary list show status edit comment attach extract"
+
+       COMPREPLY=()
+       cur=${COMP_WORDS[COMP_CWORD]}
+       prev=${COMP_WORDS[COMP_CWORD-1]}
+
+    # easy options first
+    if [[ ${cur} == -* ]] ; then
+        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+        return 0
+    fi
+
+    # check for a command first
+    if [[ ${prev} == 'cil' ]] ; then
+        COMPREPLY=( $(compgen -W "${commands}" -- ${cur}) )
+        return 0
+    fi
+
+    # check for the various commands
+    case "${prev}" in
+           show|status|edit|comment|attach)
+            local issues=$( __issues )
+               COMPREPLY=( $(compgen -W "${issues}" -- ${cur}) )
+            return 0
+            ;;
+        extract)
+               local attachments=$( __attachments )
+               COMPREPLY=( $(compgen -W "${attachments}" -- ${cur}) )
+            return 0
+            ;;
+        *)
+            ;;
+    esac
+
+    # for debugging - comment in/out when necessary
+    #COMPREPLY=( $(compgen -W "prev=${prev} cur=${cur}" -- ) )
+    #return 0
+}
+complete -F _cil cil