54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
import subprocess
|
|
|
|
from funlog import log_calls
|
|
from rich import get_console, reconfigure
|
|
from rich import print as rprint
|
|
|
|
# Update as needed.
|
|
SRC_PATHS = ["src", "tests", "devtools"]
|
|
DOC_PATHS = ["README.md"]
|
|
|
|
|
|
reconfigure(emoji=not get_console().options.legacy_windows) # No emojis on legacy windows.
|
|
|
|
|
|
def main():
|
|
rprint()
|
|
|
|
errcount = 0
|
|
errcount += run(["codespell", "--write-changes", *SRC_PATHS, *DOC_PATHS])
|
|
errcount += run(["ruff", "check", "--fix", *SRC_PATHS])
|
|
errcount += run(["ruff", "format", *SRC_PATHS])
|
|
errcount += run(["basedpyright", "--stats", *SRC_PATHS])
|
|
|
|
rprint()
|
|
|
|
if errcount != 0:
|
|
rprint(f"[bold red]:x: Lint failed with {errcount} errors.[/bold red]")
|
|
else:
|
|
rprint("[bold green]:white_check_mark: Lint passed![/bold green]")
|
|
rprint()
|
|
|
|
return errcount
|
|
|
|
|
|
@log_calls(level="warning", show_timing_only=True)
|
|
def run(cmd: list[str]) -> int:
|
|
rprint()
|
|
rprint(f"[bold green]>> {' '.join(cmd)}[/bold green]")
|
|
errcount = 0
|
|
try:
|
|
subprocess.run(cmd, text=True, check=True)
|
|
except KeyboardInterrupt:
|
|
rprint("[yellow]Keyboard interrupt - Cancelled[/yellow]")
|
|
errcount = 1
|
|
except subprocess.CalledProcessError as e:
|
|
rprint(f"[bold red]Error: {e}[/bold red]")
|
|
errcount = 1
|
|
|
|
return errcount
|
|
|
|
|
|
if __name__ == "__main__":
|
|
exit(main())
|