python package to generate shell-completion for your CLI
Project description
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 |
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shell_complete-0.4.2.tar.gz.
File metadata
- Download URL: shell_complete-0.4.2.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1ac5d4e9f96fa1c78a2694493c656e2e13e0fae59c77617dd5d23d35a700a51
|
|
| MD5 |
42a374811c9d8ccdf384a81fe5173217
|
|
| BLAKE2b-256 |
4404cc34cc7a5af887264f9dfcca1286d3fb201e887ff9d5d9b6e8a04602b3af
|
File details
Details for the file shell_complete-0.4.2-py3-none-any.whl.
File metadata
- Download URL: shell_complete-0.4.2-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c4fb13c524ac5327ad495b29d4f08ef93164906fed0741175ed4bbb92135e5e
|
|
| MD5 |
aa3f5daa152d036011ee99d6e1a8b633
|
|
| BLAKE2b-256 |
b81813edec7995b4ededa087551e9b916a39108567bc1ac3952fcbb0081b559a
|