cli/ - Python CLI application source code
cli/core/ - core runtime packagescli/modules/ - technology-specific module registrationscli/__main__.py - CLI entry point; discovers modules and registers commandstests/ - automated testsdocs/ - developer documentationscripts/ - helper scripts, including installer toolinglibrary/ - legacy in-repo template content for versions older than 0.2.0; do not treat it as the canonical template library for modern work.github/ - workflows, templates, and repository automationThe supported kinds are the registered modules in cli/modules/. Prefer this code-level list over legacy content in library/.
Current kinds:
ansiblebashcomposehelmkubernetespackerpythonstaticswarmterraformModules subclass Module from cli/core/module/ and register themselves with the central registry.
Minimal module example:
from ...core.module import Module
from ...core.registry import registry
class ExampleModule(Module):
name = "example"
description = "Manage example templates"
registry.register(ExampleModule)
Discovery and registration flow:
cli/__main__.py imports module packages/files from cli/modules/.registry.register(ModuleClass) at import time.Benefits:
Important packages/files:
cli/core/module/ - base module class and standard command implementationscli/core/template/ - template manifest parsing, variable normalization, rendering, and validationcli/core/config/ - user configuration loading, saving, validation, and migrationcli/core/library.py - template discovery across git/static librariescli/core/repo.py - repository/library management commandscli/core/registry.py - module registrycli/core/display/ - centralized CLI output rendering; see docs/display.mdcli/core/validation/ - dependency matrix and kind-specific rendered-file validatorscli/core/validators.py - generic content validators such as YAML and Docker Compose validationcli/core/exceptions.py - custom exceptions; prefer these for user-facing errorsInteractive prompting is implemented with Rich-based input helpers under cli/core/input/.
Prompt support includes:
Use --no-interactive to skip prompts and use defaults, config values, CLI overrides, or empty values as appropriate.