-
Notifications
You must be signed in to change notification settings - Fork 0
/
tasks.py
80 lines (56 loc) · 2.01 KB
/
tasks.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from invoke import Context, task
class Container(str):
def __new__(cls, value):
assert (
isinstance(value, str) and value
), "Container name must be a non-empty string"
return super().__new__(cls, f"inferred-{value}")
@task
def logs(ctx: Context, container_name: str):
name = Container(container_name)
ctx.run(f"docker logs -f {name}", pty=True)
@task
def up(ctx: Context):
ctx.run("docker compose up -d", pty=True)
@task
def down(ctx: Context, v: bool = False):
ctx.run(f"docker compose down --remove-orphans {'-v' * v}", pty=True)
@task
def restart(ctx: Context, container_name: str):
ctx.run(f"docker compose restart {container_name}", pty=True)
@task
def bash(ctx: Context, container_name: str):
name = Container(container_name)
ctx.run(f"docker exec -it {name} bash", pty=True)
@task
def migrate(ctx: Context, make: bool = False, rm: bool = False):
if rm:
cmd = 'find . -path "*/migrations/*.py" -not -name "__init__.py" -delete'
ctx.run(cmd, pty=True)
make = True
if make:
cmd = "docker exec -it inferred-backend python3 manage.py makemigrations"
ctx.run(cmd, pty=True)
ctx.run("docker exec -it inferred-backend python3 manage.py migrate", pty=True)
@task
def build(ctx: Context):
ctx.run("docker compose up -d --build --remove-orphans", pty=True)
@task
def reset(ctx: Context):
ctx.run("docker compose run --rm backend bash reset.sh", pty=True)
ctx.run("inv down")
ctx.run("inv up")
@task
def pylint(ctx: Context, files: str) -> None:
files = set(files.split())
backend_files = {f for f in files if f.startswith("backend/")}
other_files = files - backend_files
backend_files = " ".join(backend_files)
other_files = " ".join(other_files)
if backend_files:
ctx.run(
f"pylint -sn -rn --rcfile=./backend/pyproject.toml {backend_files}",
pty=True,
)
if other_files:
ctx.run(f"pylint -sn -rn {other_files}", pty=True)