123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- from datetime import datetime
- from invoke import task
- @task
- def test(c):
- """Run all the provided tests"""
- c.run("poetry run python -m pytest tests/*.py -W ignore::DeprecationWarning")
- @task
- def webpack(c):
- """Run the webpack build"""
- c.run("yarn webpack")
- @task(webpack)
- def run(c, port=8080, host="127.0.0.1"):
- """Run a debug server locally"""
- c.run(
- f"poetry run python -m flask run -p {port} -h {host}",
- env={
- "FLASK_APP": "lament-configuration.py",
- "LC_APP_PATH": f"http://{host}:{port}",
- "LC_DB_PATH": "test.db",
- "LC_SECRET_KEY": "TESTING_KEY",
- },
- )
- @task
- def migrate(c, port=8080, host="127.0.0.1"):
- """Run migrations to update the database schema"""
- c.run(
- "PYTHONPATH=$(pwd) poetry run python3 scripts/migrate.py",
- env={
- "FLASK_APP": "lament-configuration.py",
- "LC_APP_PATH": f"http://{host}:{port}",
- "LC_DB_PATH": "test.db",
- "LC_SECRET_KEY": "TESTING_KEY",
- },
- )
- @task
- def install(c):
- """Install the listed dependencies into a virtualenv"""
- c.run("poetry install")
- c.run("yarn install")
- @task
- def fmt(c):
- """Automatically format the source code, committing it if it is safe to do so."""
- status = c.run("git status --porcelain", hide="stdout")
- is_clean = status.stdout.strip() == ""
- c.run("poetry run black $(find lc scripts stubs tests *.py -name '*.py')")
- if is_clean:
- date = datetime.now().isoformat()
- c.run(f"git commit -a -m 'Automatic formatting commit: {date}'")
- else:
- print("Uncommitted change exist; skipping commit")
- @task
- def checkfmt(c):
- """Automatically format the source code, committing it if it is safe to do so."""
- return c.run(
- "poetry run black --check $(find lc scripts stubs tests *.py -name '*.py')"
- )
- @task
- def populate(c, port=8080, host="127.0.0.1"):
- """Populate the test database with fake-ish data"""
- c.run(
- "PYTHONPATH=$(pwd) poetry run python3 ./scripts/populate.py",
- env={
- "FLASK_APP": "lament-configuration.py",
- "LC_APP_PATH": f"http://{host}:{port}",
- "LC_DB_PATH": "test.db",
- "LC_SECRET_KEY": "TESTING_KEY",
- },
- )
- @task
- def tc(c):
- """Typecheck with mypy"""
- c.run(
- "MYPYPATH=$(pwd)/stubs poetry run mypy --check-untyped-defs lc/*.py tests/*.py scripts/*.py"
- )
- @task
- def lint(c):
- """Typecheck with mypy"""
- c.run("poetry run flake8")
- @task(webpack)
- def uwsgi(c, sock="lc.sock"):
- """Run a uwsgi server"""
- c.run(
- f"poetry run uwsgi --socket {sock} "
- "--module lament-configuration:app "
- "--processes 4 --threads 2"
- )
|