Skip to main content

CLI for multi-project, multi-version Odoo development workspaces

Project description

          ██████   ██████  ██       █████  ██████
         ██    ██ ██    ██ ██      ██   ██ ██   ██
         ██    ██ ██    ██ ██      ███████ ██████
         ██    ██ ██    ██ ██      ██   ██ ██   ██
          ██████   ██████  ███████ ██   ██ ██████

odoo-lab (oolab)

CLI para crear y gestionar workspaces de desarrollo Odoo multi-proyecto y multi-versión.

Python 3.10+ Odoo 15-19 License: LGPL-3

Desarrollado por IKU Solutions SAS | Autor: Yan Chirino <yan.chirino@iku.solutions>


¿Qué es oolab?

oolab automatiza la creación y gestión de entornos de desarrollo Odoo. Permite trabajar con múltiples proyectos de clientes en un solo workspace, compartiendo el framework Odoo (Community + Enterprise opcional), con configuraciones de debug individuales por proyecto en VSCode.

Resuelve problemas reales del día a día:

  • Múltiples clientes con distintas versiones de Odoo (15, 16, 17, 18, 19)
  • Proyectos con estructuras de addons no estándar (vendor/OCA/, vendor/Cybrosys/, src/, etc.)
  • Incompatibilidades de paquetes Python en macOS arm64 (psycopg2, cryptography, lxml, gevent)
  • Configuración manual repetitiva de launch.json, odoo.conf y docker-compose

Características principales

  • Multi-proyecto: gestiona múltiples clientes/tenants en un solo workspace
  • Multi-versión: soporte para Odoo 15, 16, 17, 18 y 19 con venvs separados por versión
  • Enterprise ready: integra Odoo Enterprise via git o copia local (requiere licencia propia)
  • VSCode integrado: genera launch.json con una entrada de debug por proyecto (F5 → arranca Odoo con su db-filter)
  • Gestión de módulos por CLI: module-install, module-update y open-shell con barra de progreso parseando logs de odoo-bin en vivo
  • Auto-detección de addons: escanea la estructura del proyecto y detecta todos los directorios con módulos Odoo automáticamente, sin importar si están en src/, vendor/OCA/, vendor/Cybrosys/ u otra estructura
  • Entornos aislados: venvs por versión de Odoo (.venv-v15, .venv-v19)
  • Dependencias robustas: instalación con uv + compatibilidad automática con macOS arm64 + fallback paquete por paquete
  • Comando repair: repara workspaces con paquetes Python rotos sin tener que reinicializar
  • Docker integrado: comandos start, stop, logs y status para gestionar los servicios del workspace
  • UX consistente: tema unificado, spinners con tiempo transcurrido, barras de progreso con ETA y logs coloreados por servicio
  • Multi-plataforma: compatible con macOS, Linux y Windows

Sobre Odoo Enterprise

oolab permite configurar proyectos que usan Odoo Enterprise, pero no incluye ni distribuye los módulos Enterprise. Para usarlos necesitas:

  • Tener una suscripción activa de Odoo Enterprise o ser partner autorizado de Odoo.
  • Acceso al repositorio privado github.com/odoo/enterprise (Odoo otorga acceso con la suscripción), o bien tener una copia local de los módulos Enterprise en tu máquina.

Importante: Los módulos Enterprise están protegidos por la licencia Odoo Enterprise Edition. Consulta los términos de licencia de Odoo antes de usarlos.


Instalación

Requisitos previos

  • Python >= 3.10
  • git
  • Docker + Docker Compose v2
  • uv (se instala automáticamente si no existe)

Instalar uv (si no lo tienes)

macOS / Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Instalar oolab

uv tool install odoo-lab --python 3.11

O con pipx:

pipx install odoo-lab

Instalar desde el código fuente

git clone https://github.com/ikusolutions/odoo-lab.git
cd odoo-lab
uv tool install -e . --python 3.11

Verificar

oolab --version

Quick Start

# 1. Navega a donde quieres crear el workspace
cd ~/Projects

# 2. Crea el workspace (wizard interactivo)
oolab init

# 3. Entra al workspace creado
cd odoo-launchpad

# 4. Agrega proyectos de clientes
oolab add

# 5. Levanta los servicios y abre en VSCode
oolab start
code .
# Presiona F5 para debuguear

Comandos

Workspace

Comando Descripción
oolab init Crea un workspace odoo-launchpad/ con wizard interactivo: clona Odoo, Enterprise (opcional) y configura el entorno
oolab add [nombre] Agrega un proyecto de cliente: clona un repo existente o crea uno nuevo con scaffold OCA
oolab remove <nombre> Elimina un proyecto del workspace y lo quita de oolab.yaml
oolab list Lista los proyectos con su versión de Odoo, branch y estado
oolab generate Regenera odoo.conf, docker-compose, launch.json y demás configs desde oolab.yaml
oolab repair Repara el workspace reinstalando paquetes core (psycopg2, lxml, Pillow)
oolab repair --full Repara reinstalando también todos los requirements.txt

Servicios Docker

Comando Descripción
oolab start Levanta PostgreSQL y Nginx vía Docker Compose
oolab start --build Levanta reconstruyendo imágenes Docker
oolab stop Detiene los servicios Docker
oolab status Muestra el estado: servicios activos, branches y tenants
oolab logs [servicio] Muestra logs de los servicios (db, nginx) coloreados por nivel
oolab logs -f Sigue los logs en tiempo real
oolab logs -n <N> Limita las últimas N líneas (default 50)

Módulos y base de datos

Comando Descripción
oolab module-install <db> <mods> Instala módulos en una DB. Acepta lista coma-separada (sale,purchase)
oolab module-update <db> <mods> Actualiza módulos en una DB. Acepta all para todos
oolab open-shell <db> Abre una shell ORM interactiva contra una DB
oolab reset-pwd <db> <password> Resetea la contraseña del usuario admin (base.user_admin)
oolab reset-pwd -d <db> -p <pwd> -l <login> Cambia también el login del admin

Atajos comunes: -d/--db, -m/--modules, -p/--password, -l/--login, -t/--timeout (default 1800s en module-install/module-update). Estos comandos resuelven automáticamente venv, addons-path y odoo.conf desde oolab.yaml, matchean el tenant por db_filter o name, y muestran progreso en vivo parseando los logs de odoo-bin.

Diagnóstico

Comando Descripción
oolab doctor Verifica dependencias del sistema (git, Docker, uv, Python)
oolab --version Muestra la versión del CLI
oolab --help Muestra la ayuda general
oolab <comando> --help Muestra la ayuda de un comando específico

Estructura del workspace

odoo-launchpad/
├── odoo/                   # Odoo Community (compartido entre proyectos)
├── enterprise/             # Enterprise addons (opcional, compartido)
├── tenants/
│   ├── cliente-a/          # Proyecto estándar
│   │   └── addons/
│   └── cliente-b/          # Proyecto con estructura vendor
│       ├── src/
│       └── vendor/
│           ├── OCA/
│           └── Cybrosys/
├── config/
│   └── odoo/odoo.conf      # Configuración central de Odoo
├── docker/
│   └── docker-compose.yaml
├── .vscode/
│   ├── launch.json         # Una entrada de debug por tenant (F5)
│   ├── settings.json
│   └── tasks.json
├── .venv-v15/              # Venv para Odoo 15 (Python 3.10)
├── .venv-v19/              # Venv para Odoo 19 (Python 3.11)
├── .env
└── oolab.yaml              # Fuente de verdad del workspace

Auto-detección de addons

oolab escanea automáticamente la estructura del proyecto para encontrar todos los directorios con módulos Odoo (identificados por __manifest__.py o __openerp__.py), hasta 3 niveles de profundidad. Esto cubre estructuras como:

tenants/proyecto/src/               → detectado
tenants/proyecto/vendor/OCA/        → detectado
tenants/proyecto/vendor/Cybrosys/   → detectado
tenants/proyecto/addons/            → detectado

El launch.json generado incluye todos los paths detectados automáticamente. Sin configuración manual.


oolab.yaml

Archivo central de configuración del workspace. Se genera en oolab init y se actualiza con oolab add / oolab remove.

name: odoo-launchpad
python_version: "3.11"
postgres_version: "16"
postgres_port: 5432
postgres_user: odoo
postgres_password: odoo
enterprise_enabled: false
nginx_enabled: true
nginx_http_port: 80

tenants:
  - name: cliente-a
    display_name: "Cliente A"
    url: git@github.com:org/cliente-a.git
    branch: "19.0"
    db_filter: cliente-a

  - name: assenza
    display_name: "Assenza"
    url: git@github.com:org/assenza.git
    branch: "15.0"
    db_filter: assenza
    enterprise: false

Versiones soportadas

Versión Odoo Python PostgreSQL mínimo
15 3.10 14
16 3.10 16
17 3.10 16
18 3.11 16
19 3.11 16

Cada versión usa un venv separado (.venv-v15, .venv-v16, etc.). Los proyectos con la misma versión comparten el venv.


Contribuir

Las contribuciones son bienvenidas. Este es un proyecto open source mantenido por IKU Solutions SAS.

  1. Fork el repositorio
  2. Crea tu branch (git checkout -b feature/mi-feature)
  3. Commit tus cambios siguiendo Conventional Commits
  4. Abre un Pull Request

Reporta bugs en issues.


Licencia

Este proyecto está licenciado bajo LGPL-3.0-or-later.

Copyright (c) 2026 IKU Solutions SAS
Autor: Yan Chirino <yan.chirino@iku.solutions>
Website: https://www.iku.solutions

Hecho con Python + Typer + Rich por IKU Solutions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

odoo_lab-0.4.0.tar.gz (92.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

odoo_lab-0.4.0-py3-none-any.whl (55.8 kB view details)

Uploaded Python 3

File details

Details for the file odoo_lab-0.4.0.tar.gz.

File metadata

  • Download URL: odoo_lab-0.4.0.tar.gz
  • Upload date:
  • Size: 92.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for odoo_lab-0.4.0.tar.gz
Algorithm Hash digest
SHA256 45530b07a2f72ca2b827b3491eee89ac88a8da00d480b958fd2173353587b23f
MD5 99bda3606a5bef5e614f49af39d5d669
BLAKE2b-256 30f753ebcd5847fab1295bbcf21adb8709ed94bb2300d4855ed3f44f284828ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for odoo_lab-0.4.0.tar.gz:

Publisher: publish.yml on ikusolutions/odoo-lab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file odoo_lab-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: odoo_lab-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 55.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for odoo_lab-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 44ab86dcebc132290227fb7d3a3941544f9c9c9fd37b428b2b2a58855218483d
MD5 69e8f6d04a2b51caa4064dfaa9d69eb2
BLAKE2b-256 25d6f5d4cca61856ba65979828b5b9cfbf45e371df9b79e2af6807372c2f98c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for odoo_lab-0.4.0-py3-none-any.whl:

Publisher: publish.yml on ikusolutions/odoo-lab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page