Merged --commands and --options into --complete. Simpler that way.
authorW. Trevor King <wking@drexel.edu>
Thu, 27 Nov 2008 14:34:54 +0000 (09:34 -0500)
committerW. Trevor King <wking@drexel.edu>
Thu, 27 Nov 2008 14:34:54 +0000 (09:34 -0500)
be
becommands/list.py
completion/be.bash
libbe/cmdutil.py

diff --git a/be b/be
index ab6ddeb944b3463d299c8b96e72374becf9d205e..35dab69c0c4ddd7452a38f37449eefe2a5e92e44 100755 (executable)
--- a/be
+++ b/be
@@ -24,11 +24,10 @@ __doc__ == cmdutil.help()
 
 if len(sys.argv) == 1 or sys.argv[1] in ('--help', '-h'):
     print cmdutil.help()
-elif sys.argv[1] == '--commands':
+elif sys.argv[1] == '--complete':
     for command, module in cmdutil.iter_commands():
         print command
-elif sys.argv[1] == '--options':
-    print '\n'.join(cmdutil.options())
+    print '\n'.join(["--help","--complete","--options"])
 else:
     try:
         try:
index 7c51f11d88ca7bed4e2dc5564889dfb01ef60e72..25e72d3911e9097fc62bc28050918ae9bde09159 100644 (file)
@@ -37,11 +37,11 @@ def execute(args, test=False):
     
     for option in [o.dest for o in parser.option_list if o.dest != None]:
         value = getattr(options, option)
-        if value == "--options":
+        if value == "--complete":
             if option == "status":
                 raise cmdutil.GetCompletions(status_values)
             raise cmdutil.GetCompletions()
-    if "--options" in args:
+    if "--complete" in args:
         raise cmdutil.GetCompletions() # no completions for arguments yet
     
     if len(args) > 0:
index 878935292c3c4e32a570f7f74f2e8b2295a3d1e5..dbe121415192678018cfa68608e90442950f9bb1 100644 (file)
 #   "An introduction to bash completion: part 2"
 #   http://www.debian-administration.org/articles/317
 
-# Support commands of the form:
-#   be <command> [<long option>] [<long option>] ...
 # Requires:
-#   be --commands
-#       to print a list of available commands
-#   be command [<option> ...] --options
-#       to print a list of available long options
+#   be [X Y Z] --complete
+#       to print a list of available completions at that point
 _be()
 {
     local cur prev opts
@@ -27,7 +23,7 @@ _be()
     
     if [ $COMP_CWORD -eq 1 ]; then
        # no command yet, show all commands
-       COMPREPLY=( $( compgen -W "$(be --commands)" -- $cur ) )
+       COMPREPLY=( $( compgen -W "$(be --complete)" -- $cur ) )
     else
        # remove the first word (should be "be") for security reasons
        unset COMP_WORDS[0]
@@ -36,7 +32,7 @@ _be()
        for i in `seq $COMP_CWORD ${#COMP_WORDS[@]}`; do
            unset COMP_WORDS[$i];
        done
-       COMPREPLY=( $( compgen -W "$(be "${COMP_WORDS[@]}" --options)" -- $cur ) )
+       COMPREPLY=( $( compgen -W "$(be "${COMP_WORDS[@]}" --complete)" -- $cur ) )
     fi
 }
 
index aad6bbe7f9e812671a467607c987b6fe5b431f7e..2bfe6d4d2fcc0b4b4b94b9ab8d4f04f7baed09a8 100644 (file)
@@ -86,16 +86,12 @@ def help(cmd=None):
             ret.append("be %s%*s    %s" % (name, numExtraSpaces, "", desc))
         return "\n".join(ret)
 
-def options(cmd=None):
-    if cmd != None:
-        parser = get_command(cmd).get_parser()
-        longopts = []
-        for opt in parser.option_list:
-            longopts.append(opt.get_opt_string())
-        return longopts
-    else:
-        # These probably shouldn't be hardcoded...
-        return ["--help","--commands","--options"]
+def options(cmd):
+    parser = get_command(cmd).get_parser()
+    longopts = []
+    for opt in parser.option_list:
+        longopts.append(opt.get_opt_string())
+    return longopts
 
 def raise_get_help(option, opt, value, parser):
     raise GetHelp
@@ -109,9 +105,9 @@ class CmdOptionParser(optparse.OptionParser):
         self.remove_option("-h")
         self.add_option("-h", "--help", action="callback", 
                         callback=raise_get_help, help="Print a help message")
-        self.add_option("--options", action="callback",
+        self.add_option("--complete", action="callback",
                         callback=raise_get_completions,
-                        help="Print a list of available long options")
+                        help="Print a list of available completions")
 
     def error(self, message):
         raise UsageError(message)