Source code for faust.cli.completion
"""completion - Command line utility for completion.
Supports ``bash``, ``ksh``, ``zsh``, etc.
"""
import os
from pathlib import Path
from .base import AppCommand
try:
import click_completion
except ImportError: # pragma: no cover
click_completion = None # noqa
else: # pragma: no cover
click_completion.init()
[docs]class completion(AppCommand):
"""Output shell completion to be evaluated by the shell."""
require_app = False
[docs] async def run(self) -> None:
"""Dump click completion script for Faust CLI."""
if click_completion is None:
raise self.UsageError(
"Missing required dependency, but this is easy to fix.\n"
"Run `pip install click_completion` from your virtualenv\n"
"and try again!"
)
self.say(click_completion.get_code(shell=self.shell())) # nosec: B604
[docs] def shell(self) -> str:
"""Return the current shell used in this environment."""
shell_path = Path(os.environ.get("SHELL", "auto"))
return shell_path.stem