Files
project-manager/project_manager/python/entry.py
T
2023-03-14 23:59:58 +03:00

35 lines
1.0 KiB
Python

from pathlib import Path
from typing import Optional
from ..entry import Entry
from .command import PoetryCommand
class PythonEntry(Entry):
TYPE: str = "python"
def __init__(self, basepath: Path):
super().__init__(self.TYPE, basepath)
def setup(self):
self._logger.info(f"setup {self}")
PoetryCommand.env_use("3.8").run(self._basepath)
PoetryCommand.install().run(self._basepath)
def lint(self):
self._logger.info(f"lint {self}")
PoetryCommand("run", "black", "--check", "--diff", "./").run(self._basepath)
PoetryCommand("run", "isort", "--profile", "black", "--check-only", "./").run(
self._basepath
)
def format(self):
self._logger.info(f"format {self}")
PoetryCommand("run", "isort", "./").run(self._basepath)
PoetryCommand("run", "black", "./").run(self._basepath)
@classmethod
def detect(cls, basepath: Path) -> Optional["PythonEntry"]:
if (basepath / "pyproject.toml").exists():
return cls(basepath)