C++ / fmt (pull_request) Successful in 4s
JS/TS / fmt (pull_request) Successful in 15s
JS/TS / lint (pull_request) Successful in 18s
Python / lint (pull_request) Failing after 32s
Python / fmt (pull_request) Failing after 37s
Python / test (pull_request) Successful in 52s
C++ / build (pull_request) Successful in 1m56s
Rust / fmt (pull_request) Successful in 1m22s
Rust / build (pull_request) Successful in 2m5s
Python / buildcheck (pull_request) Successful in 2m39s
Rust / clippy (pull_request) Successful in 2m1s
C++ / clang-tidy (pull_request) Successful in 3m46s
76 lines
1.9 KiB
Python
76 lines
1.9 KiB
Python
from __future__ import annotations
|
|
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import typer
|
|
from typer._completion_classes import completion_init
|
|
from typer._completion_shared import _get_shell_name, install
|
|
|
|
from zshell.subcommands import record, scheme, screenshot, shell, wallpaper
|
|
|
|
app = typer.Typer(name="zshell-cli", add_completion=False)
|
|
|
|
app.add_typer(shell.app, name="shell")
|
|
app.add_typer(scheme.app, name="scheme")
|
|
app.add_typer(screenshot.app, name="screenshot")
|
|
app.add_typer(wallpaper.app, name="wallpaper")
|
|
app.add_typer(record.app, name="record")
|
|
|
|
|
|
def _completion_installed() -> bool:
|
|
shell = _get_shell_name()
|
|
match shell:
|
|
case "zsh":
|
|
return (Path.home() / ".zfunc" / "_zshell-cli").exists()
|
|
case "bash":
|
|
return (
|
|
Path.home() / ".bash_completions" / "zshell-cli.sh"
|
|
).exists()
|
|
case "fish":
|
|
return (
|
|
Path.home()
|
|
/ ".config"
|
|
/ "fish"
|
|
/ "completions"
|
|
/ "zshell-cli.fish"
|
|
).exists()
|
|
return False
|
|
|
|
|
|
def _install_completion() -> None:
|
|
if _completion_installed():
|
|
print("zshell-cli: Shell completion already installed.")
|
|
sys.exit(0)
|
|
shell = _get_shell_name()
|
|
if shell is None:
|
|
print("zshell-cli: Unable to detect shell type.", file=sys.stderr)
|
|
sys.exit(1)
|
|
try:
|
|
_, path = install(prog_name="zshell-cli")
|
|
print(f"zshell-cli: Shell completion installed ({shell}: {path})")
|
|
print(
|
|
"zshell-cli: Restart your shell or source the file to enable tab-completion."
|
|
)
|
|
except Exception as e:
|
|
print(
|
|
f"zshell-cli: Failed to install shell completion: {e}",
|
|
file=sys.stderr,
|
|
)
|
|
raise typer.Exit(code=1) from None
|
|
|
|
|
|
def main() -> None:
|
|
if "--install-autocomplete" in sys.argv:
|
|
_install_completion()
|
|
return
|
|
if "_ZSHELL_CLI_COMPLETE" in os.environ:
|
|
completion_init()
|
|
if sys.stdout.isatty() and not _completion_installed():
|
|
print(
|
|
"zshell-cli: Tip: run with --install-autocomplete for tab completion.",
|
|
file=sys.stderr,
|
|
)
|
|
app()
|