Alexander Kalinovsky 7d89a20c6e
All checks were successful
CI / test (3.13) (push) Successful in 1m51s
Publish to TestPyPI / build-publish (release) Successful in 37s
Publish to PyPI / build-publish (release) Has been skipped
chore: update CI workflow to use actions/cache@v3 and actions/upload-artifact@v3, add coverage summary step
2025-08-27 20:02:49 +03:00

quickbot_cli

QuickBot CLI for scaffolding new projects from templates.

Features

  • Generate a ready-to-run QuickBot app structure from templates
  • Optional modules (e.g., Alembic migrations, i18n) included/excluded via flags

Installation

You can install the CLI into your environment:

uv pip install quickbot-cli

Alternatively, for local development in this repo:

uv pip install -e .[dev]

Usage

Show help:

uv run quickbot --help
uv run quickbot init --help

Generate a project into a target directory (default template: "basic"):

uv run quickbot init ./my_bot \
  --template basic \
  --project-name my_bot \
  --description "My awesome bot" \
  --author "Jane Doe" \
  --license-name MIT \
  --include-alembic \
  --include-i18n \
  --overwrite

Key options:

  • --template, -t: template name (default: basic)
  • --project-name: project name used during rendering
  • --description: short description
  • --author: author name
  • --license-name: license identifier (e.g., MIT)
  • --include-alembic/--no-include-alembic: include Alembic files (default: on)
  • --include-i18n/--no-include-i18n: include i18n files (default: on)
  • --overwrite: overwrite existing files when rendering

Templates

Built-in templates live under src/quickbot_cli/templates/. The default is basic and includes a minimal app layout plus optional Alembic/i18n modules.

Each template can include a __template__.yaml file describing variables and post-generation tasks. Example:

variables:
  project_name:
    prompt: Project name
    default: my_project
  include_alembic:
    prompt: Include Alembic?
    choices: ["yes", "no"]
    default: "yes"
post_tasks:
  - when: "{{ include_alembic }}"
    run: ["echo", "alembic_initialized"]

Template files use the .j2 suffix and are rendered to the output path with variables made available to Jinja2. Non-.j2 files are copied as-is.

Development

Clone the repo and install dev deps:

uv pip install -e .[dev]

Run tests:

uv run python run_tests.py
# or
uv run -m pytest tests/ -v --tb=short

Code style and tooling:

  • Ruff and MyPy configs are in pyproject.toml
  • Pre-commit hooks: .pre-commit-config.yaml

License

MIT. See LICENSES/MIT.txt.

Description
No description provided
Readme 174 KiB
v0.1.1 Latest
2025-09-08 16:12:20 +00:00
Languages
Python 90.5%
Jinja 8%
Shell 1.5%