Files
chia-blockchain/chia/cmds/completion.py
Kyle AltendorfandGitHub 7f7bce8677 help= not short_help= (#15076)
* help= not short_help=

* oops

* more

* more
2023-05-03 00:29:13 -05:00

50 lines
1.4 KiB
Python

from __future__ import annotations
import os
import subprocess
from pathlib import Path
import click
SHELLS = ["bash", "zsh", "fish"]
shell = os.environ.get("SHELL")
if shell is not None:
shell = Path(shell).name
if shell not in SHELLS:
shell = None
@click.group(
help="Generate shell completion",
)
def completion() -> None:
pass
@completion.command(help="Generate shell completion code")
@click.option(
"-s",
"--shell",
type=click.Choice(SHELLS),
default=shell,
show_default=True,
required=shell is None,
help="Shell type to generate for",
)
def generate(shell: str) -> None:
"""
\b
Generate shell completion code for the current, or specified (-s)hell.
You will need to 'source' this code to enable shell completion.
You can source it directly (performs slower) by running:
\033[3;33meval "$(chia complete generate)"\033[0m
or you can save the output to a file:
\033[3;33mchia complete generate > ~/.chia-complete-bash\033[0m
and source that file with:
\033[3;33m. ~/.chia-complete-bash\033[0m
"""
# Could consider calling directly in the future.
# https://github.com/pallets/click/blob/ef11be6e49e19a055fe7e5a89f0f1f4062c68dba/src/click/shell_completion.py#L17
subprocess.run(["chia"], check=True, env={**os.environ, "_CHIA_COMPLETE": f"{shell}_source"})