shell-complete-py
python package to generate shell-completion for your CLI
Installation
pip3 install shell-complete
Quick-Start
Installation
pip3 install shell-complete
Testing if everything works
To test if the package was installed successfully
$ eval "$(shell-complete shell_complete.__main__:parser)" # via CLI
$ eval "$(shell-complete --completion)" # via ShellCompleteAction
$ shell-complete <tab><tab>
--completion --help --root --version
$ shell-complete --root <tab><tab>
dir/ .git/ .venv/ # example. this part will look different on your machine
or pipe it into a file and source that
$ shell-complete --completion > ./shell-complete.completion.bash
$ source ./shell-complete.completion.bash
Usage
Either import and use the generate(parser: ArgumentParser) function directly or add the ShellCompleteAction to your argparse.
import pathlib
from argparse import ArgumentParser
from shell_complete import ShellCompleteAction, types, associate
parser = ArgumentParser(prog="myprog")
...
# creates the --completion argument that's similar to --help or --version
# --completion print : prints the script for the user to handle it himself or use with eval
# --completion install : creates script in ~/.bash_completion.d/ and `source <script>` in ~/.bashrc
# --completion uninstall : removes script in ~/.bash_completion.d/ and `source <script>` in ~/.bashrc
parser.add_argument('--completion', action=ShellCompleteAction,
help="Generate a bash-completion-script")
# add custom type converter that can still auto-complete
@associate(types.directory)
def dirtype(value: str) -> pathlib.Path:
return pathlib.Path(value)
# smart autocompletion
parser.add_argument('--dest', type=dirtype) # the custom type
parser.add_argument('--source', type=types.file) # or the builtins
parser.add_argument('--bind', type=types.ip_address)
parser.add_argument('--database', type=types.known_hosts)
# subparsers are also supported
subparsers = parser.add_subparsers()
subcommand = subparsers.add_parser("sub")
# Completion is only suggested after typing `myprog sub`
subcommand.add_argument('--hidden', types=types.ip_address)
You can also execute the module itself
python3 -m shell_complete [--root ROOT] parser
Or run the console-script
shell-complete [--root ROOT] parser
Support completion types
Basic completion types can be imported via
from shell_complete import types
from shell_complete.argparse import types # both are the same
| type | info |
|---|---|
types.path |
any type of path (file and directories) |
types.file |
completion for files |
types.directory |
completion for directories |
types.mac_address |
mac addresses |
types.ip_address |
ip addresses |
types.ipv4_address |
ipv4 addresses |
types.ipv6_address |
ipv6 addresses |
types.network_interface |
names of network interfaces |
types.inet_services |
names of inet services |
types.uid |
available user id's |
types.gid |
available group id's |
types.service |
available systemctl services |
types.user_group |
user:group pair |
types.user_at_host |
user@host pair |
types.known_hosts |
name of known hosts |
Metadata
Release files for shell-complete 0.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| shell_complete-0.4.2.tar.gz | 13.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| shell_complete-0.4.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.7 kB
Release files / shell_complete-0.4.2.tar.gz
| Download URL | shell_complete-0.4.2.tar.gz |
|---|---|
| Size | 13.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c1ac5d4e9f96fa1c78a2694493c656e2e13e0fae59c77617dd5d23d35a700a51
|
|
BLAKE2b-256 checksum How to use checksums |
4404cc34cc7a5af887264f9dfcca1286d3fb201e887ff9d5d9b6e8a04602b3af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.10.12
|
Release files / shell_complete-0.4.2-py3-none-any.whl
| Download URL | shell_complete-0.4.2-py3-none-any.whl |
|---|---|
| Size | 14.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0c4fb13c524ac5327ad495b29d4f08ef93164906fed0741175ed4bbb92135e5e
|
|
BLAKE2b-256 checksum How to use checksums |
b81813edec7995b4ededa087551e9b916a39108567bc1ac3952fcbb0081b559a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.10.12
|