copier/devtasks.py
Jairo Llopis fd23923b5c
style(ruff-format): enable and reformat Python files
Until now, only linting was enabled. My failure.

I added this setting to widen the code style automation. I also enabled [keep-runtime-typing](https://docs.astral.sh/ruff/settings/#lint_pyupgrade_keep-runtime-typing) because we use Pydantic.

Finally, I executed the new formatting over all the project.
2024-12-03 13:59:00 +01:00

61 lines
1.7 KiB
Python

"""Development helper tasks."""
import logging
from pathlib import Path
from plumbum import TEE, CommandNotFound, ProcessExecutionError, local
_logger = logging.getLogger(__name__)
HERE = Path(__file__).parent
def dev_setup() -> None:
"""Set up a development environment."""
with local.cwd(HERE):
local["direnv"]("allow")
local["poetry"]("install")
def lint() -> None:
"""Lint and format the project."""
args = [
"--extra-experimental-features",
"nix-command flakes",
"--accept-flake-config",
"develop",
"--impure",
HERE,
"--command",
"pre-commit",
"run",
"--color=always",
"--all-files",
]
try:
local["nix"].with_cwd(HERE)[args] & TEE
except CommandNotFound:
_logger.warning("Nix not found; fallback to a container")
runner = local.get("podman", "docker")
try:
(
runner[
"container",
"create",
"--name=copier-lint-v1",
f"--volume={HERE}:{HERE}:rw,z",
f"--workdir={HERE}",
"docker.io/nixos/nix",
"nix",
args,
]
& TEE
)
except ProcessExecutionError:
_logger.info(
"Couldn't create copier-lint-v1 container, probably because a previous one exists. "
"Remove it if you want to recycle it. Otherwise, this is OK."
)
runner["container", "start", "--attach", "copier-lint-v1"] & TEE
except ProcessExecutionError as error:
raise SystemExit(error.errno)