Source code for mini_arcade.modules.game_scaffold.commands
"""
CLI command for scaffolding a new Mini Arcade game project.
"""
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 GameScaffoldProcessor
[docs]
@CommandRegistry.implementation("scaffold-game")
class ScaffoldGameCommand(BaseCommand):
name = "scaffold-game"
aliases = ("new-game",)
args = [
ArgumentType(
"game_id",
str,
"Game id in kebab-case (for example: my-first-game).",
required=True,
),
ArgumentType(
"package",
str,
"Python package name in snake_case. Defaults to game-id normalized.",
required=False,
default=None,
),
ArgumentType(
"title",
str,
"Human-friendly game title. Defaults to title-cased game id.",
required=False,
default=None,
),
ArgumentType(
"destination",
str,
"Parent directory where the new game folder will be created. Defaults to ./games.",
required=False,
default="games",
),
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 new runnable Mini Arcade game project.
Usage:
mini-arcade scaffold-game --game-id my-first-game
mini-arcade scaffold-game --game-id my-first-game --destination C:\\dev\\arcade-forge\\games
mini-arcade scaffold-game --game-id my-first-game --package my_first_game --dry-run
"""
def _execute(self, **kwargs):
self.set_processor(GameScaffoldProcessor)
return self._run(**kwargs)