mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Add initial Invoke tasks.py file
This commit is contained in:
parent
01eb08c42b
commit
e46b623254
1 changed files with 81 additions and 0 deletions
81
tasks.py
Normal file
81
tasks.py
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
from shutil import which
|
||||||
|
|
||||||
|
from invoke import task
|
||||||
|
|
||||||
|
PKG_NAME = "pelican"
|
||||||
|
PKG_PATH = Path("pelican")
|
||||||
|
ACTIVE_VENV = os.environ.get("VIRTUAL_ENV", None)
|
||||||
|
VENV_HOME = Path(os.environ.get("WORKON_HOME", "~/virtualenvs"))
|
||||||
|
VENV_PATH = Path(ACTIVE_VENV) if ACTIVE_VENV else (VENV_HOME / PKG_NAME)
|
||||||
|
VENV = str(VENV_PATH.expanduser())
|
||||||
|
|
||||||
|
TOOLS = ["poetry", "pre-commit"]
|
||||||
|
POETRY = which("poetry") if which("poetry") else (VENV / Path("bin") / "poetry")
|
||||||
|
PRECOMMIT = (
|
||||||
|
which("pre-commit") if which("pre-commit") else (VENV / Path("bin") / "pre-commit")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@task
|
||||||
|
def tests(c):
|
||||||
|
"""Run the test suite"""
|
||||||
|
c.run(f"{VENV}/bin/python -Wd -m unittest discover", pty=True)
|
||||||
|
|
||||||
|
|
||||||
|
@task
|
||||||
|
def black(c, check=False, diff=False):
|
||||||
|
"""Run Black auto-formatter, optionally with --check or --diff"""
|
||||||
|
check_flag, diff_flag = "", ""
|
||||||
|
if check:
|
||||||
|
check_flag = "--check"
|
||||||
|
if diff:
|
||||||
|
diff_flag = "--diff"
|
||||||
|
c.run(f"{VENV}/bin/black {check_flag} {diff_flag} {PKG_PATH} tasks.py")
|
||||||
|
|
||||||
|
|
||||||
|
@task
|
||||||
|
def isort(c, check=False, diff=False):
|
||||||
|
check_flag, diff_flag = "", ""
|
||||||
|
if check:
|
||||||
|
check_flag = "-c"
|
||||||
|
if diff:
|
||||||
|
diff_flag = "--diff"
|
||||||
|
c.run(
|
||||||
|
f"{VENV}/bin/isort {check_flag} {diff_flag} --recursive {PKG_PATH}/* tasks.py"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@task
|
||||||
|
def flake8(c):
|
||||||
|
c.run(f"{VENV}/bin/flake8 {PKG_PATH} tasks.py")
|
||||||
|
|
||||||
|
|
||||||
|
@task
|
||||||
|
def lint(c):
|
||||||
|
isort(c, check=True)
|
||||||
|
black(c, check=True)
|
||||||
|
flake8(c)
|
||||||
|
|
||||||
|
|
||||||
|
@task
|
||||||
|
def tools(c):
|
||||||
|
"""Install tools in the virtual environment if not already on PATH"""
|
||||||
|
for tool in TOOLS:
|
||||||
|
if not which(tool):
|
||||||
|
c.run(f"{VENV}/bin/pip install {tool}")
|
||||||
|
|
||||||
|
|
||||||
|
@task
|
||||||
|
def precommit(c):
|
||||||
|
"""Install pre-commit hooks to .git/hooks/pre-commit"""
|
||||||
|
c.run(f"{PRECOMMIT} install")
|
||||||
|
|
||||||
|
|
||||||
|
@task
|
||||||
|
def setup(c):
|
||||||
|
c.run(f"{VENV}/bin/pip install -U pip")
|
||||||
|
tools(c)
|
||||||
|
c.run(f"{POETRY} install")
|
||||||
|
precommit(c)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue