Source code for mini_arcade.modules.system_lab_scaffold.commands
"""
CLI command for scaffolding a minimal reusable system lab experiment.
"""
from __future__ import annotations
from mini_arcade.cli.argument_type import ArgumentType
from mini_arcade.cli.base_command import BaseCommand
from mini_arcade.cli.registry import CommandRegistry
from .processors import SystemLabScaffoldProcessor
[docs]
@CommandRegistry.implementation("scaffold-system-lab")
class ScaffoldSystemLabCommand(BaseCommand):
name = "scaffold-system-lab"
aliases = ("new-system-lab", "scaffold-lab", "new-lab")
args = [
ArgumentType(
"lab_id",
str,
"Experiment id in snake_case or kebab-case.",
required=True,
),
ArgumentType(
"case_name",
str,
"Registered system lab case name. Defaults to normalized lab id.",
required=False,
default=None,
),
ArgumentType(
"title",
str,
"Human-friendly lab title. Defaults to title-cased lab id.",
required=False,
default=None,
),
ArgumentType(
"destination",
str,
"Parent directory where the new lab folder will be created. Defaults to ./experiments.",
required=False,
default="experiments",
),
ArgumentType(
"force",
bool,
"Overwrite scaffold files if the target folder already exists.",
required=False,
default=False,
),
ArgumentType(
"dry_run",
bool,
"Print the planned file tree without writing files.",
required=False,
default=False,
),
]
__doc__ = """
Scaffold a minimal reusable system lab experiment.
Usage:
mini-arcade scaffold-system-lab --lab-id sparks_lab
mini-arcade scaffold-system-lab --lab-id sparks-lab --destination C:\\dev\\mini-arcade\\experiments
mini-arcade scaffold-system-lab --lab-id sparks_lab --case-name spark_stats --dry-run
"""
def _execute(self, **kwargs):
self.set_processor(SystemLabScaffoldProcessor)
return self._run(**kwargs)