Action Completer

A fairly simple method for registering callables as prompt-toolkit completions

Supported Versions Test Status codecov Code Style: Black

from pathlib import Path

from action_completer import ActionCompleter
from prompt_toolkit.shortcuts import prompt
from prompt_toolkit.completion import PathCompleter
from prompt_toolkit.validation import Validator

completer = ActionCompleter()


@completer.action("cat")
@completer.param(
   PathCompleter(),
   cast=Path,
   validators=[
      Validator.from_callable(
         lambda p: Path(p).is_file(),
         error_message="Path is not an existing file"
      )
   ]
)
def _cat_action(filepath: Path):
   with filepath.open("r") as file_handle:
      print(file_handle.read())


prompt_result = prompt(
   ">>> ",
   completer=completer,
   validator=completer.get_validator()
)
completer.run_action(prompt_result)
_images/004-cat-path-validation.gif

To get started using this package, please see the Getting Started page!