Skip to content

Commit cfac1f3

Browse files
add test option to cli
1 parent ec65a6d commit cfac1f3

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

rcds/cli/__main__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import click
22

3-
from .deploy import deploy
3+
from .deploy import deploy, test
44

55

66
@click.group()
@@ -9,7 +9,7 @@ def cli():
99

1010

1111
cli.add_command(deploy)
12-
12+
cli.add_command(test)
1313

1414
if __name__ == "__main__":
1515
cli()

rcds/cli/deploy.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,29 @@ def deploy() -> None:
4343
project.scoreboard_backend.commit()
4444
else:
4545
click.echo("WARN: no scoreboard backend, skipping...")
46+
47+
@click.command()
48+
def test() -> None:
49+
try:
50+
project_config = find_files(["rcds"], SUPPORTED_EXTENSIONS, recurse=True)[
51+
"rcds"
52+
].parent
53+
except KeyError:
54+
click.echo("Could not find project root!")
55+
exit(1)
56+
click.echo(f"Loading project at {project_config}")
57+
project = rcds.Project(project_config)
58+
click.echo("Initializing backends")
59+
project.load_backends()
60+
click.echo("Loading challenges")
61+
project.load_all_challenges()
62+
for challenge in project.challenges.values():
63+
cm = rcds.challenge.docker.ContainerManager(challenge)
64+
for container_name, container in cm.containers.items():
65+
click.echo(f"{challenge.config['id']}: checking container {container_name}")
66+
if not container.is_built():
67+
click.echo(
68+
f"{challenge.config['id']}: building container {container_name}"
69+
f" ({container.get_full_tag()})"
70+
)
71+
container.build()

0 commit comments

Comments
 (0)