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()))
[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