argcomplete provides very useful functionality that you will basically get for free with just a couple of steps.
Implementation
Put some markup below the shebang of your frontend script in the form of a comment:
#!/usr/bin/env python
# PYTHON_ARGCOMPLETE_OK
The BASH-completion script argcomplete will basically identify and scan any script with a Python shebang that is used with BASH-completion. This entails actually running the script. In order to minimize how much time is spent loading scripts that don’t actually use argcomplete, the completion script will ignore anything that does not have this comment directly following the shebang.
Next, add and import for the argcomplete
package and run argcomplete.autocomplete(parser)
after you have configured your command-line parameters but before your call to parser.parse_args()
(where parser
is an instance of argparse.ArgumentParser
). This function will produce command-line configuration metadata and then terminate.
That is it. Note that it is not practical to assume that everyone who uses your script will have argcomplete
installed. They may not be using BASH (BASH is the only well-supported shell at this time), they may not be using a supported OS, and/or any commercial environments that adopt your tools may be server environments that have no use for command-line completion and refuse to support it. Therefore, you should wrap the import with a try-except for ImportError
and then only call argcomplete.autocomplete
if you were able to import the package.
Installation
To install autocomplete
, the simplest route is to merely do a “sudo pip install argcomplete” and then call “activate-global-python-argcomplete” (this is a physical script likely installed to /usr/local/bin. This only has to be done once and will install a non-project-specific script that will work for any script that is equipped to use argcomplete. For other configuration and semantics, see the project page.
Like this:
Like Loading...
You must be logged in to post a comment.