Skip to main content

acodo-cli

CLI de desarrollo para proyectos Python >= 3.13, parte de Acodo Framework. Se ejecuta desde el directorio de un proyecto (en el workspace, la raíz) y lee su configuración de acodo.toml. Construido con Typer y Rich.

🚀 Instalación

Desde PyPI, como dependencia de desarrollo:

uv add --dev acodo-cli

Para trabajar en el monorepo, desde la raíz: uv sync --all-packages. Entre miembros se enlaza con acodo-cli = { workspace = true } en [tool.uv.sources].

Instalado como herramienta global (uv tool install, pipx o Python del sistema) solo expone init: el resto de comandos usan ruff, ty y pytest del entorno del proyecto.

🛠️ Comandos

Los comandos no reciben argumentos: leen todo de acodo.toml y, como mucho, hacen alguna pregunta interactiva.

uv run acodo                # Sin subcomando: ayuda (u ofrece inicializar si falta acodo.toml)
uv run acodo --version      # Panel con el logo, la versión y el entorno
uv run acodo --help         # Lista los comandos (también: python -m acodo_cli)
uv run acodo init           # En un proyecto: acodo.toml por defecto, .local/gh_app.json y .local/ al .gitignore
                            # Fuera de un proyecto (global): ofrece clonar la plantilla (por defecto ./acodo/)
uv run acodo doctor         # Diagnóstico del entorno y la configuración
uv run acodo format         # ruff format
uv run acodo lint           # ruff check --fix
uv run acodo types          # ty check
uv run acodo tests          # pytest
uv run acodo tests-cov      # pytest con cobertura (requiere pytest-cov)
uv run acodo check          # format, lint, types y tests
uv run acodo clean          # Borra cachés y artefactos, previa confirmación
uv run acodo todo           # Lista TODO/FIXME/XXX/HACK (falla si alguno no tiene texto)
uv run acodo api            # Documentación de la API en Markdown (target de [api])
uv run acodo backup         # Copia de seguridad (target de [backup])
uv run acodo code-count     # Líneas de código y docstrings (pregunta si detallar por fichero)
uv run acodo gh-token       # Token de instalación de una GitHub App (también al portapapeles)
uv run acodo gh-check       # Comprueba el acceso al repositorio configurado

Consideraciones:

  • Las comprobaciones de calidad no se detienen en el primer fallo y muestran un resumen final.
  • tests-cov necesita pytest-cov; la cobertura se configura en [tool.coverage].
  • api solo genera Markdown (.md); documenta lo público que tenga docstring, sin importar el código.

🔑 GitHub App

gh-token y gh-check leen el JSON indicado en [github_app].config_file (por defecto .local/gh_app.json):

{
    "repository": "owner/repo",
    "app-id": "123456",
    "private-key": "private-key.pem",
    "installation-id": "12345678",
    "api-url": "https://api.github.com"
}

🎨 Colores

Toda la salida (tablas, mensajes, ayuda de Typer y banner) usa solo la paleta del framework Acodo, definida como ACODO_THEME en theme.py. El markup de Rich usa los estilos del tema (ok, error, warning, label, muted, title, border...), nunca colores sueltos; un test lo comprueba sobre la salida real.

⚙️ Configuración

Todo vive en el acodo.toml de la raíz del proyecto (acodo init copia el de por defecto; el CLI lo busca también en los directorios superiores):

[all]                       # Común a todos los comandos
include = ["scripts/", "src/", "tests/"]
exclude = [".cache/", ".git", ".pytest_cache", ".ruff_cache", ".venv"]

[format]                    # También [lint], [types], [test], [todo], [backup] y [api]:
include = []                # añaden sus rutas a las de [all]
exclude = []

[backup]
target = ".local/backup.zip"   # zip | tar.gz
version_suffix = true          # backup-<versión>.zip

[api]
target = ".local/api.md"       # md
version_suffix = true

[github_app]
config_file = ".local/gh_app.json"
  • Los include son directorios relativos a la raíz; los que no existan se ignoran.
  • Un exclude sin / interior (.venv) casa con cualquier componente de la ruta; con / (docs/api/), con su comienzo.
  • El nombre, la versión y requires-python salen del [project] del pyproject.toml.
  • En el workspace de Acodo basta include = ["packages/"].

📁 Estructura

src/acodo_cli/
├── cli.py                # App Typer: cada comando solo llama a su script
├── config.py             # load_config(): lee acodo.toml (y [project] de pyproject.toml)
├── models.py             # Dataclasses y enums compartidos
├── theme.py              # Paleta Acodo, Theme de Rich y estilos de la ayuda de Typer
├── banner.py             # ASCII art con degradado y panel de --version
├── typer_options.py      # Opción global --version
├── commands_service.py   # Lógica común (consolas, errores, procesos, alcance, GitHub App)
├── resources/acodo.toml  # Configuración por defecto que copia `acodo init`
└── commands/             # un script por comando (api, backup, check, clean...)

Enlaces

Licencia

MIT.

Metadata

Release files for acodo-cli 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for acodo-cli 0.2.2
File Size Uploaded Provenance
acodo_cli-0.2.2.tar.gz 24.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for acodo-cli 0.2.2
File Interpreter ABI Platform
acodo_cli-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 60.3 kB

Release files / acodo_cli-0.2.2.tar.gz

Download URL acodo_cli-0.2.2.tar.gz
Size 24.8 kB
Tags Source
SHA-256 checksum
How to use checksums
bddb3a37f75d9b1657ef6b8ca0ae3c1ff4541d1407aff185d864ba70eb50681c
BLAKE2b-256 checksum
How to use checksums
99578beaf4b69eadcb3f90b44c0dcd774d8da62b63f9d08d06b63782cfafb06c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / acodo_cli-0.2.2-py3-none-any.whl

Download URL acodo_cli-0.2.2-py3-none-any.whl
Size 35.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d720e16489bac44dbe0a41f74a55c437b6210c026efb82468fa9e946e07a7e35
BLAKE2b-256 checksum
How to use checksums
591a8dd33e9c66f5700114f48a7fb491f5becd2d80b7c24a005cc54108124612
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for acodo-cli 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page