diff --git a/cliar/cliar.py b/cliar/cliar.py index 9c80c8b..76cbdc3 100644 --- a/cliar/cliar.py +++ b/cliar/cliar.py @@ -4,6 +4,8 @@ from collections import OrderedDict from typing import List, Iterable, Callable, Set, Type, get_type_hints +import argcomplete + from .utils import ignore @@ -277,6 +279,8 @@ def _register_commands(self, handlers: Iterable[Callable]): def parse(self): '''Parse commandline input, i.e. launch the CLI.''' + argcomplete.autocomplete(self._parser) + args = self._parser.parse_args() command = args._command diff --git a/poetry.lock b/poetry.lock index ab84a07..c5a8cdd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,3 +1,19 @@ +[[package]] +category = "main" +description = "Bash tab completion for argparse" +name = "argcomplete" +optional = false +python-versions = "*" +version = "1.12.0" + +[package.dependencies] +[package.dependencies.importlib-metadata] +python = ">=3.6,<3.7" +version = ">=0.23,<2" + +[package.extras] +test = ["coverage", "flake8", "pexpect", "wheel"] + [[package]] category = "dev" description = "An abstract syntax tree for Python with inference support." @@ -176,7 +192,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "2.8" [[package]] -category = "dev" +category = "main" description = "Read metadata from Python packages" marker = "python_version < \"3.8\"" name = "importlib-metadata" @@ -322,7 +338,7 @@ jsmin = ">=2.2.2" mkdocs = ">=1.0.4" [[package]] -category = "dev" +category = "main" description = "More routines for operating on iterables, beyond itertools" name = "more-itertools" optional = false @@ -543,7 +559,7 @@ python-versions = "*" version = "1.11.2" [[package]] -category = "dev" +category = "main" description = "Backport of pathlib-compatible object wrapper for zip files" marker = "python_version < \"3.8\"" name = "zipp" @@ -559,10 +575,15 @@ docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] testing = ["pathlib2", "contextlib2", "unittest2"] [metadata] -content-hash = "87c38171f01ff61572bdb8489c069ee3a3a0926d7bb3b77ddf9da3ea647f5bff" +content-hash = "c0cfbd9ec46840de1cb3010f12a8ce47d867dacaf3bc13b238fe01b63d3df0f7" +lock-version = "1.0" python-versions = "^3.6" [metadata.files] +argcomplete = [ + {file = "argcomplete-1.12.0-py2.py3-none-any.whl", hash = "sha256:91dc7f9c7f6281d5a0dce5e73d2e33283aaef083495c13974a7dd197a1cdc949"}, + {file = "argcomplete-1.12.0.tar.gz", hash = "sha256:2fbe5ed09fd2c1d727d4199feca96569a5b50d44c71b16da9c742201f7cc295c"}, +] astroid = [ {file = "astroid-2.3.3-py3-none-any.whl", hash = "sha256:840947ebfa8b58f318d42301cf8c0a20fd794a33b61cc4638e28e9e61ba32f42"}, {file = "astroid-2.3.3.tar.gz", hash = "sha256:71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a"}, @@ -734,6 +755,11 @@ markupsafe = [ {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"}, {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, ] mccabe = [ diff --git a/pyproject.toml b/pyproject.toml index c1c698b..459e2a0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,6 +12,7 @@ keywords = ["cli", "commandline"] [tool.poetry.dependencies] python = "^3.6" +argcomplete = "^1.12.0" [tool.poetry.dev-dependencies] pytest = "^3.5"