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

Dentro del workspace, como dependencia de desarrollo de otro miembro:

[dependency-groups]
dev = ["acodo-cli"]

[tool.uv.sources]
acodo-cli = { workspace = true }

Para trabajar en el monorepo, desde la raíz: uv sync --all-packages.

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...)

Licencia

MIT.

Metadata

Release files for acodo-cli 0.2.1

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.1
File Size Uploaded Provenance
acodo_cli-0.2.1.tar.gz 24.7 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 60.1 kB

Release files / acodo_cli-0.2.1.tar.gz

Download URL acodo_cli-0.2.1.tar.gz
Size 24.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9e95621e80703729280a0fa8c4477f562fc9fb14c75d513b0e09f94a1bbd3335
BLAKE2b-256 checksum
How to use checksums
8d53ac69709eaa6c0fb8264ce165fde8b4ce75cd5bcdf8820b32db6748dc8f67
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.1-py3-none-any.whl

Download URL acodo_cli-0.2.1-py3-none-any.whl
Size 35.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4acc856188a84df296fd5828778d0cdd78ef1b1bf383f61e1b6f7419082f82ee
BLAKE2b-256 checksum
How to use checksums
af0637935e500d2adcb40d545472a2a3a82be2e8f35840e5fb9bc2ba69c0e301
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.1

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.1 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