Reusable Python modules imported by tasks/*.py invoke tasks. All functions are module-level —
no classes required except small helper validators in common/cli.py.
modules/
common/ # cli, properties, utils helpers
setup/ # creates/stamps properties.yml, called by setup.sh/setup.ps1
| Directory | Purpose |
|---|---|
common/ |
CLI helpers, properties.yml config reader, output/utility helpers |
setup/ |
Creates/stamps properties.yml, called by setup.sh/setup.ps1 |
- One module per file; filename matches the concern in snake_case
- Each
modules/repo/*.pyfile exposes amain()entry point - Shell out via
subprocess.run(..., cwd=repo_path)— nevershell=True - Use
modules.common.utils(success/error/warning/info) for all console output - Resolve repo config via
modules.common.properties