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 configs de debug por proyecto (run, shell, install, update)
  • 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
  • Interactivo: wizard paso a paso con spinners y feedback visual en tiempo real
  • 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)
oolab logs -f Sigue los logs en tiempo real

Base de datos

Comando Descripción
oolab reset-pwd <db> <password> Resetea la contraseña del usuario admin en una base de datos local
oolab reset-pwd <db> <password> --login <login> Resetea la contraseña del usuario especificado

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         # Configs de debug: por tenant + Shell + Update + Install
│   ├── 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.3.4.tar.gz (83.2 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.3.4-py3-none-any.whl (43.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: odoo_lab-0.3.4.tar.gz
  • Upload date:
  • Size: 83.2 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.3.4.tar.gz
Algorithm Hash digest
SHA256 6e907e2dcf2e31b2ecd560e0d84807f2b6def0488f70b572a8f03c38bedc6750
MD5 9216a10a5943567dc78a694ee6032bb5
BLAKE2b-256 b59555b2423b720ec9d0d31e47ff0aca1e8eba2e6ecd07b9b3783e24a283434d

See more details on using hashes here.

Provenance

The following attestation bundles were made for odoo_lab-0.3.4.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.3.4-py3-none-any.whl.

File metadata

  • Download URL: odoo_lab-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 43.3 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.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b9521fc851548d7d7fbc352365d07acf76a37be70da1421688922f2522806276
MD5 ed95a27b1461c5a6725a67233949fb80
BLAKE2b-256 9f15d548ce9186c047cc4a6a7f0397ba5dff66777ea74c94543692eab4ca490e

See more details on using hashes here.

Provenance

The following attestation bundles were made for odoo_lab-0.3.4-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