odoo-lab 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- odoo_lab-0.1.0/.github/workflows/ci.yml +52 -0
- odoo_lab-0.1.0/.github/workflows/publish.yml +32 -0
- odoo_lab-0.1.0/.gitignore +30 -0
- odoo_lab-0.1.0/LICENSE +13 -0
- odoo_lab-0.1.0/PKG-INFO +305 -0
- odoo_lab-0.1.0/README.md +270 -0
- odoo_lab-0.1.0/pyproject.toml +67 -0
- odoo_lab-0.1.0/src/oolab/__init__.py +14 -0
- odoo_lab-0.1.0/src/oolab/cli.py +63 -0
- odoo_lab-0.1.0/src/oolab/commands/__init__.py +0 -0
- odoo_lab-0.1.0/src/oolab/commands/add.py +325 -0
- odoo_lab-0.1.0/src/oolab/commands/doctor.py +131 -0
- odoo_lab-0.1.0/src/oolab/commands/generate.py +101 -0
- odoo_lab-0.1.0/src/oolab/commands/init.py +525 -0
- odoo_lab-0.1.0/src/oolab/commands/list.py +58 -0
- odoo_lab-0.1.0/src/oolab/commands/remove.py +64 -0
- odoo_lab-0.1.0/src/oolab/config.py +164 -0
- odoo_lab-0.1.0/src/oolab/scaffold.py +250 -0
- odoo_lab-0.1.0/src/oolab/templates/README.md.j2 +125 -0
- odoo_lab-0.1.0/src/oolab/templates/docker-compose.yaml.j2 +35 -0
- odoo_lab-0.1.0/src/oolab/templates/env.j2 +4 -0
- odoo_lab-0.1.0/src/oolab/templates/extensions.json.j2 +7 -0
- odoo_lab-0.1.0/src/oolab/templates/gitignore.j2 +49 -0
- odoo_lab-0.1.0/src/oolab/templates/launch.json.j2 +91 -0
- odoo_lab-0.1.0/src/oolab/templates/nginx.conf.j2 +43 -0
- odoo_lab-0.1.0/src/oolab/templates/odoo.conf.j2 +42 -0
- odoo_lab-0.1.0/src/oolab/templates/settings.json.j2 +12 -0
- odoo_lab-0.1.0/src/oolab/templates/tasks.json.j2 +19 -0
- odoo_lab-0.1.0/src/oolab/versions.py +39 -0
- odoo_lab-0.1.0/wiki/Comandos.md +94 -0
- odoo_lab-0.1.0/wiki/Contribuir.md +70 -0
- odoo_lab-0.1.0/wiki/Enterprise.md +48 -0
- odoo_lab-0.1.0/wiki/Estructura-del-Workspace.md +76 -0
- odoo_lab-0.1.0/wiki/FAQ.md +49 -0
- odoo_lab-0.1.0/wiki/Home.md +33 -0
- odoo_lab-0.1.0/wiki/Instalacion.md +74 -0
- odoo_lab-0.1.0/wiki/Quick-Start.md +74 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
lint:
|
|
11
|
+
name: Lint & Quality
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- name: Set up Python
|
|
17
|
+
uses: actions/setup-python@v5
|
|
18
|
+
with:
|
|
19
|
+
python-version: "3.11"
|
|
20
|
+
|
|
21
|
+
- name: Install uv
|
|
22
|
+
uses: astral-sh/setup-uv@v4
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: uv pip install --system -e ".[dev]"
|
|
26
|
+
|
|
27
|
+
- name: Ruff check
|
|
28
|
+
run: ruff check src/
|
|
29
|
+
|
|
30
|
+
- name: Ruff format check
|
|
31
|
+
run: ruff format --check src/
|
|
32
|
+
|
|
33
|
+
build:
|
|
34
|
+
name: Build package
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
needs: lint
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v4
|
|
39
|
+
|
|
40
|
+
- name: Set up Python
|
|
41
|
+
uses: actions/setup-python@v5
|
|
42
|
+
with:
|
|
43
|
+
python-version: "3.11"
|
|
44
|
+
|
|
45
|
+
- name: Install build tools
|
|
46
|
+
run: pip install hatchling build
|
|
47
|
+
|
|
48
|
+
- name: Build
|
|
49
|
+
run: python -m build
|
|
50
|
+
|
|
51
|
+
- name: Check package
|
|
52
|
+
run: pip install twine && twine check dist/*
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
id-token: write
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
publish:
|
|
12
|
+
name: Build and publish to PyPI
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
environment:
|
|
15
|
+
name: pypi
|
|
16
|
+
url: https://pypi.org/p/odoo-lab
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Set up Python
|
|
21
|
+
uses: actions/setup-python@v5
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.11"
|
|
24
|
+
|
|
25
|
+
- name: Install build tools
|
|
26
|
+
run: pip install hatchling build
|
|
27
|
+
|
|
28
|
+
- name: Build package
|
|
29
|
+
run: python -m build
|
|
30
|
+
|
|
31
|
+
- name: Publish to PyPI
|
|
32
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
*.egg-info/
|
|
7
|
+
*.egg
|
|
8
|
+
dist/
|
|
9
|
+
build/
|
|
10
|
+
|
|
11
|
+
# Virtual environments
|
|
12
|
+
.venv/
|
|
13
|
+
venv/
|
|
14
|
+
|
|
15
|
+
# IDE
|
|
16
|
+
.idea/
|
|
17
|
+
.vscode/
|
|
18
|
+
*.sw?
|
|
19
|
+
|
|
20
|
+
# OS
|
|
21
|
+
.DS_Store
|
|
22
|
+
Thumbs.db
|
|
23
|
+
|
|
24
|
+
# Testing
|
|
25
|
+
.tox/
|
|
26
|
+
.coverage
|
|
27
|
+
htmlcov/
|
|
28
|
+
.pytest_cache/
|
|
29
|
+
.mypy_cache/
|
|
30
|
+
.ruff_cache/
|
odoo_lab-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
GNU LESSER GENERAL PUBLIC LICENSE
|
|
2
|
+
Version 3, 29 June 2007
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2026 IKU Solutions SAS <https://www.iku.solutions>
|
|
5
|
+
|
|
6
|
+
Everyone is permitted to copy and distribute verbatim copies of this
|
|
7
|
+
license document, but changing it is not allowed.
|
|
8
|
+
|
|
9
|
+
This version of the GNU Lesser General Public License incorporates the
|
|
10
|
+
terms and conditions of version 3 of the GNU General Public License,
|
|
11
|
+
supplemented by the additional permissions listed below.
|
|
12
|
+
|
|
13
|
+
For the full license text, see: https://www.gnu.org/licenses/lgpl-3.0.html
|
odoo_lab-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: odoo-lab
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: CLI scaffolder for multi-project Odoo development workspaces
|
|
5
|
+
Project-URL: Homepage, https://www.iku.solutions
|
|
6
|
+
Project-URL: Repository, https://github.com/ikusolutions/odoo-lab
|
|
7
|
+
Project-URL: Issues, https://github.com/ikusolutions/odoo-lab/issues
|
|
8
|
+
Author-email: Yan Chirino <yan.chirino@iku.solutions>
|
|
9
|
+
Maintainer-email: IKU Solutions SAS <info@iku.solutions>
|
|
10
|
+
License-Expression: LGPL-3.0-or-later
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: cli,development,erp,odoo,scaffolder,workspace
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Framework :: Odoo
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
|
|
18
|
+
Classifier: Operating System :: MacOS
|
|
19
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
25
|
+
Requires-Python: >=3.10
|
|
26
|
+
Requires-Dist: jinja2>=3.1
|
|
27
|
+
Requires-Dist: pyyaml>=6.0
|
|
28
|
+
Requires-Dist: rich>=13.0
|
|
29
|
+
Requires-Dist: typer>=0.9
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
Requires-Dist: build; extra == 'dev'
|
|
32
|
+
Requires-Dist: ruff>=0.6; extra == 'dev'
|
|
33
|
+
Requires-Dist: twine; extra == 'dev'
|
|
34
|
+
Description-Content-Type: text/markdown
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
██████ ██████ ██ █████ ██████
|
|
39
|
+
██ ██ ██ ██ ██ ██ ██ ██ ██
|
|
40
|
+
██ ██ ██ ██ ██ ███████ ██████
|
|
41
|
+
██ ██ ██ ██ ██ ██ ██ ██ ██
|
|
42
|
+
██████ ██████ ███████ ██ ██ ██████
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
# odoo-lab (`oolab`)
|
|
46
|
+
|
|
47
|
+
**CLI scaffolder para crear y gestionar workspaces de desarrollo Odoo con soporte multi-proyecto.**
|
|
48
|
+
|
|
49
|
+
[](https://www.python.org/)
|
|
50
|
+
[](https://www.odoo.com/)
|
|
51
|
+
[](https://www.gnu.org/licenses/lgpl-3.0)
|
|
52
|
+
|
|
53
|
+
> Desarrollado por **[IKU Solutions SAS](https://www.iku.solutions)** | Autor: **Yan Chirino** \<yan.chirino@iku.solutions\>
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Que es oolab?
|
|
58
|
+
|
|
59
|
+
`oolab` es una herramienta de linea de comandos que automatiza la creacion y gestion de entornos de desarrollo Odoo. Permite trabajar con multiples proyectos de clientes simultaneamente, compartiendo un solo framework Odoo (Community + Enterprise opcional), con configuraciones de debug individuales por proyecto.
|
|
60
|
+
|
|
61
|
+
### Caracteristicas principales
|
|
62
|
+
|
|
63
|
+
- **Multi-proyecto**: gestiona multiples clientes/tenants en un solo workspace
|
|
64
|
+
- **Multi-version**: soporte para Odoo 16, 17, 18 y 19
|
|
65
|
+
- **Enterprise ready**: integra Odoo Enterprise via git o copia local (requiere licencia propia)
|
|
66
|
+
- **VSCode integrado**: genera `launch.json` con configs de debug por proyecto (run, shell, install, update)
|
|
67
|
+
- **Entornos aislados**: venvs por version de Odoo (`.venv-v19`, `.venv-v18`)
|
|
68
|
+
- **Scaffold OCA**: crea proyectos vacios con estructura de calidad (pre-commit, ruff, pylint)
|
|
69
|
+
- **Dependencias robustas**: instalacion con uv + fallbacks automaticos
|
|
70
|
+
- **Interactivo**: wizard paso a paso con spinners y feedback visual
|
|
71
|
+
- **Multi-plataforma**: compatible con macOS, Linux y Windows
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Sobre Odoo Enterprise
|
|
76
|
+
|
|
77
|
+
`oolab` permite configurar proyectos que usan Odoo Enterprise, pero **no incluye ni distribuye los modulos Enterprise**. Para usarlos necesitas:
|
|
78
|
+
|
|
79
|
+
- **Tener una suscripcion activa** de [Odoo Enterprise](https://www.odoo.com/pricing) o ser partner autorizado de Odoo.
|
|
80
|
+
- **Acceso al repositorio privado** `github.com/odoo/enterprise` (Odoo otorga acceso con la suscripcion), **o bien** tener una copia local de los modulos Enterprise en tu maquina.
|
|
81
|
+
|
|
82
|
+
Al agregar un proyecto Enterprise con `oolab add`, el CLI te preguntara si quieres clonar desde un repositorio git (necesitas acceso SSH/HTTPS al repo de Enterprise) o indicar un directorio local donde ya tengas los modulos.
|
|
83
|
+
|
|
84
|
+
> **Importante:** Los modulos Enterprise estan protegidos por la licencia Odoo Enterprise Edition. Consulta los [terminos de licencia de Odoo](https://www.odoo.com/legal) antes de usarlos.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Instalacion
|
|
89
|
+
|
|
90
|
+
### Requisitos previos
|
|
91
|
+
|
|
92
|
+
- **Python** >= 3.10
|
|
93
|
+
- **git**
|
|
94
|
+
- **Docker** + Docker Compose v2
|
|
95
|
+
- **[uv](https://github.com/astral-sh/uv)** (se instala automaticamente si no existe)
|
|
96
|
+
|
|
97
|
+
### Instalar uv (si no lo tienes)
|
|
98
|
+
|
|
99
|
+
**macOS / Linux:**
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Windows (PowerShell):**
|
|
106
|
+
|
|
107
|
+
```powershell
|
|
108
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Instalar oolab
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
uv tool install odoo-lab --python 3.11
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
O con pipx:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
pipx install odoo-lab
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Agregar al PATH (si es necesario)
|
|
124
|
+
|
|
125
|
+
**macOS / Linux (zsh):**
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
|
|
129
|
+
source ~/.zshrc
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**macOS / Linux (bash):**
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
|
|
136
|
+
source ~/.bashrc
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Windows (PowerShell):** uv agrega automaticamente al PATH. Si no, agrega `%USERPROFILE%\.local\bin` a las variables de entorno del sistema.
|
|
140
|
+
|
|
141
|
+
### Instalar desde el codigo fuente (para desarrollo)
|
|
142
|
+
|
|
143
|
+
Si quieres contribuir o modificar oolab:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
git clone https://github.com/ikusolutions/odoo-lab.git
|
|
147
|
+
cd odoo-lab
|
|
148
|
+
uv tool install -e . --python 3.11
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Verificar
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
oolab -v
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Quick Start
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# 1. Navega a donde quieres crear el workspace
|
|
163
|
+
cd ~/Projects
|
|
164
|
+
|
|
165
|
+
# 2. Crea el workspace (wizard interactivo)
|
|
166
|
+
oolab init
|
|
167
|
+
|
|
168
|
+
# 3. Entra al workspace creado
|
|
169
|
+
cd odoo-launchpad
|
|
170
|
+
|
|
171
|
+
# 4. Agrega proyectos de clientes
|
|
172
|
+
oolab add
|
|
173
|
+
|
|
174
|
+
# 5. Abre en VSCode y presiona F5
|
|
175
|
+
code .
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Comandos
|
|
181
|
+
|
|
182
|
+
| Comando | Descripcion |
|
|
183
|
+
|---------|-------------|
|
|
184
|
+
| `oolab init` | Crea un nuevo workspace `odoo-launchpad/` con wizard interactivo |
|
|
185
|
+
| `oolab add` | Agrega un proyecto de cliente (clona repo o crea con scaffold OCA) |
|
|
186
|
+
| `oolab remove <nombre>` | Elimina un proyecto del workspace |
|
|
187
|
+
| `oolab list` | Lista todos los proyectos configurados con su estado |
|
|
188
|
+
| `oolab generate` | Regenera todos los archivos de configuracion desde `oolab.yaml` |
|
|
189
|
+
| `oolab doctor` | Verifica dependencias del sistema (git, docker, uv, python) |
|
|
190
|
+
| `oolab -v` | Muestra version e informacion del CLI |
|
|
191
|
+
| `oolab -h` | Muestra la ayuda |
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Estructura del workspace
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
odoo-launchpad/
|
|
199
|
+
├── odoo/ # Odoo Community (compartido entre proyectos)
|
|
200
|
+
├── enterprise/ # Enterprise addons (opcional, compartido)
|
|
201
|
+
├── tenants/
|
|
202
|
+
│ ├── cliente-a/ # Proyecto de cliente A (repo independiente)
|
|
203
|
+
│ └── cliente-b/ # Proyecto de cliente B (repo independiente)
|
|
204
|
+
├── config/
|
|
205
|
+
│ └── odoo/odoo.conf # Configuracion central de Odoo
|
|
206
|
+
├── docker/
|
|
207
|
+
│ └── docker-compose.yaml
|
|
208
|
+
├── .vscode/
|
|
209
|
+
│ ├── launch.json # Configs de debug: Community, Shell, Update, Install + tenants
|
|
210
|
+
│ ├── settings.json # Python paths, venv
|
|
211
|
+
│ └── tasks.json # docker-compose-up
|
|
212
|
+
├── .venv-v19/ # Entorno virtual (uno por version de Odoo)
|
|
213
|
+
├── .env
|
|
214
|
+
└── oolab.yaml # Fuente de verdad del workspace
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Ejemplo de uso
|
|
220
|
+
|
|
221
|
+
### Crear workspace con Enterprise y un cliente
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
$ cd ~/Projects
|
|
225
|
+
$ oolab init
|
|
226
|
+
|
|
227
|
+
Odoo Lab v0.1.0 | IKU Solutions SAS | https://www.iku.solutions
|
|
228
|
+
|
|
229
|
+
Version de Odoo [16 / 17 / 18 / 19] (19): 19
|
|
230
|
+
Incluir Enterprise? [y/n]: y
|
|
231
|
+
URL del repositorio Enterprise: git@github.com:odoo/enterprise.git
|
|
232
|
+
Agregar un proyecto de cliente ahora? [y/n]: y
|
|
233
|
+
Nombre del proyecto: Mi Cliente ERP
|
|
234
|
+
Clonar desde un repositorio existente? [y/n]: y
|
|
235
|
+
URL del repositorio: git@github.com:org/mi-cliente-erp.git
|
|
236
|
+
|
|
237
|
+
...spinners y progreso...
|
|
238
|
+
|
|
239
|
+
Workspace listo!
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Agregar otro proyecto despues
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
$ cd odoo-launchpad
|
|
246
|
+
$ oolab add
|
|
247
|
+
|
|
248
|
+
Nombre del proyecto: Otro Cliente
|
|
249
|
+
Version de Odoo [16 / 17 / 18 / 19] (19): 18
|
|
250
|
+
Clonar desde un repositorio existente? [y/n]: n
|
|
251
|
+
|
|
252
|
+
Proyecto 'Otro Cliente' agregado correctamente.
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Contribuir
|
|
258
|
+
|
|
259
|
+
Las contribuciones son bienvenidas! Este es un proyecto open source mantenido por [IKU Solutions SAS](https://www.iku.solutions).
|
|
260
|
+
|
|
261
|
+
### Como contribuir
|
|
262
|
+
|
|
263
|
+
1. **Fork** el repositorio
|
|
264
|
+
2. Crea tu **branch** (`git checkout -b feature/mi-feature`)
|
|
265
|
+
3. **Commit** tus cambios (`git commit -m 'feat: descripcion'`)
|
|
266
|
+
4. **Push** al branch (`git push origin feature/mi-feature`)
|
|
267
|
+
5. Abre un **Pull Request**
|
|
268
|
+
|
|
269
|
+
### Reportar issues
|
|
270
|
+
|
|
271
|
+
Si encuentras un bug o tienes una sugerencia, abre un [issue](https://github.com/ikusolutions/odoo-lab/issues).
|
|
272
|
+
|
|
273
|
+
### Guias de desarrollo
|
|
274
|
+
|
|
275
|
+
- Usa [Conventional Commits](https://www.conventionalcommits.org/) para mensajes de commit
|
|
276
|
+
- El codigo sigue las convenciones de [Ruff](https://docs.astral.sh/ruff/) con line-length=88
|
|
277
|
+
- Pre-commit hooks recomendados para calidad de codigo
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Roadmap
|
|
282
|
+
|
|
283
|
+
- [ ] Soporte para multiples versiones de Odoo en un mismo workspace
|
|
284
|
+
- [ ] Comando `oolab upgrade` para actualizar el framework
|
|
285
|
+
- [ ] Comando `oolab db` para gestionar bases de datos
|
|
286
|
+
- [ ] Soporte para PyCharm/IntelliJ
|
|
287
|
+
- [ ] Publicacion en PyPI
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Licencia
|
|
292
|
+
|
|
293
|
+
Este proyecto esta licenciado bajo [LGPL-3.0-or-later](https://www.gnu.org/licenses/lgpl-3.0.html).
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
Copyright (c) 2026 IKU Solutions SAS
|
|
297
|
+
Autor: Yan Chirino <yan.chirino@iku.solutions>
|
|
298
|
+
Website: https://www.iku.solutions
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
<p align="center">
|
|
304
|
+
Hecho con <b>Python</b> + <b>Typer</b> + <b>Rich</b> por <a href="https://www.iku.solutions"><b>IKU Solutions</b></a>
|
|
305
|
+
</p>
|
odoo_lab-0.1.0/README.md
ADDED
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
|
|
2
|
+
```
|
|
3
|
+
██████ ██████ ██ █████ ██████
|
|
4
|
+
██ ██ ██ ██ ██ ██ ██ ██ ██
|
|
5
|
+
██ ██ ██ ██ ██ ███████ ██████
|
|
6
|
+
██ ██ ██ ██ ██ ██ ██ ██ ██
|
|
7
|
+
██████ ██████ ███████ ██ ██ ██████
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
# odoo-lab (`oolab`)
|
|
11
|
+
|
|
12
|
+
**CLI scaffolder para crear y gestionar workspaces de desarrollo Odoo con soporte multi-proyecto.**
|
|
13
|
+
|
|
14
|
+
[](https://www.python.org/)
|
|
15
|
+
[](https://www.odoo.com/)
|
|
16
|
+
[](https://www.gnu.org/licenses/lgpl-3.0)
|
|
17
|
+
|
|
18
|
+
> Desarrollado por **[IKU Solutions SAS](https://www.iku.solutions)** | Autor: **Yan Chirino** \<yan.chirino@iku.solutions\>
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Que es oolab?
|
|
23
|
+
|
|
24
|
+
`oolab` es una herramienta de linea de comandos que automatiza la creacion y gestion de entornos de desarrollo Odoo. Permite trabajar con multiples proyectos de clientes simultaneamente, compartiendo un solo framework Odoo (Community + Enterprise opcional), con configuraciones de debug individuales por proyecto.
|
|
25
|
+
|
|
26
|
+
### Caracteristicas principales
|
|
27
|
+
|
|
28
|
+
- **Multi-proyecto**: gestiona multiples clientes/tenants en un solo workspace
|
|
29
|
+
- **Multi-version**: soporte para Odoo 16, 17, 18 y 19
|
|
30
|
+
- **Enterprise ready**: integra Odoo Enterprise via git o copia local (requiere licencia propia)
|
|
31
|
+
- **VSCode integrado**: genera `launch.json` con configs de debug por proyecto (run, shell, install, update)
|
|
32
|
+
- **Entornos aislados**: venvs por version de Odoo (`.venv-v19`, `.venv-v18`)
|
|
33
|
+
- **Scaffold OCA**: crea proyectos vacios con estructura de calidad (pre-commit, ruff, pylint)
|
|
34
|
+
- **Dependencias robustas**: instalacion con uv + fallbacks automaticos
|
|
35
|
+
- **Interactivo**: wizard paso a paso con spinners y feedback visual
|
|
36
|
+
- **Multi-plataforma**: compatible con macOS, Linux y Windows
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Sobre Odoo Enterprise
|
|
41
|
+
|
|
42
|
+
`oolab` permite configurar proyectos que usan Odoo Enterprise, pero **no incluye ni distribuye los modulos Enterprise**. Para usarlos necesitas:
|
|
43
|
+
|
|
44
|
+
- **Tener una suscripcion activa** de [Odoo Enterprise](https://www.odoo.com/pricing) o ser partner autorizado de Odoo.
|
|
45
|
+
- **Acceso al repositorio privado** `github.com/odoo/enterprise` (Odoo otorga acceso con la suscripcion), **o bien** tener una copia local de los modulos Enterprise en tu maquina.
|
|
46
|
+
|
|
47
|
+
Al agregar un proyecto Enterprise con `oolab add`, el CLI te preguntara si quieres clonar desde un repositorio git (necesitas acceso SSH/HTTPS al repo de Enterprise) o indicar un directorio local donde ya tengas los modulos.
|
|
48
|
+
|
|
49
|
+
> **Importante:** Los modulos Enterprise estan protegidos por la licencia Odoo Enterprise Edition. Consulta los [terminos de licencia de Odoo](https://www.odoo.com/legal) antes de usarlos.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Instalacion
|
|
54
|
+
|
|
55
|
+
### Requisitos previos
|
|
56
|
+
|
|
57
|
+
- **Python** >= 3.10
|
|
58
|
+
- **git**
|
|
59
|
+
- **Docker** + Docker Compose v2
|
|
60
|
+
- **[uv](https://github.com/astral-sh/uv)** (se instala automaticamente si no existe)
|
|
61
|
+
|
|
62
|
+
### Instalar uv (si no lo tienes)
|
|
63
|
+
|
|
64
|
+
**macOS / Linux:**
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Windows (PowerShell):**
|
|
71
|
+
|
|
72
|
+
```powershell
|
|
73
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Instalar oolab
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
uv tool install odoo-lab --python 3.11
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
O con pipx:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
pipx install odoo-lab
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Agregar al PATH (si es necesario)
|
|
89
|
+
|
|
90
|
+
**macOS / Linux (zsh):**
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
|
|
94
|
+
source ~/.zshrc
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**macOS / Linux (bash):**
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
|
|
101
|
+
source ~/.bashrc
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Windows (PowerShell):** uv agrega automaticamente al PATH. Si no, agrega `%USERPROFILE%\.local\bin` a las variables de entorno del sistema.
|
|
105
|
+
|
|
106
|
+
### Instalar desde el codigo fuente (para desarrollo)
|
|
107
|
+
|
|
108
|
+
Si quieres contribuir o modificar oolab:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
git clone https://github.com/ikusolutions/odoo-lab.git
|
|
112
|
+
cd odoo-lab
|
|
113
|
+
uv tool install -e . --python 3.11
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Verificar
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
oolab -v
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Quick Start
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# 1. Navega a donde quieres crear el workspace
|
|
128
|
+
cd ~/Projects
|
|
129
|
+
|
|
130
|
+
# 2. Crea el workspace (wizard interactivo)
|
|
131
|
+
oolab init
|
|
132
|
+
|
|
133
|
+
# 3. Entra al workspace creado
|
|
134
|
+
cd odoo-launchpad
|
|
135
|
+
|
|
136
|
+
# 4. Agrega proyectos de clientes
|
|
137
|
+
oolab add
|
|
138
|
+
|
|
139
|
+
# 5. Abre en VSCode y presiona F5
|
|
140
|
+
code .
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Comandos
|
|
146
|
+
|
|
147
|
+
| Comando | Descripcion |
|
|
148
|
+
|---------|-------------|
|
|
149
|
+
| `oolab init` | Crea un nuevo workspace `odoo-launchpad/` con wizard interactivo |
|
|
150
|
+
| `oolab add` | Agrega un proyecto de cliente (clona repo o crea con scaffold OCA) |
|
|
151
|
+
| `oolab remove <nombre>` | Elimina un proyecto del workspace |
|
|
152
|
+
| `oolab list` | Lista todos los proyectos configurados con su estado |
|
|
153
|
+
| `oolab generate` | Regenera todos los archivos de configuracion desde `oolab.yaml` |
|
|
154
|
+
| `oolab doctor` | Verifica dependencias del sistema (git, docker, uv, python) |
|
|
155
|
+
| `oolab -v` | Muestra version e informacion del CLI |
|
|
156
|
+
| `oolab -h` | Muestra la ayuda |
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Estructura del workspace
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
odoo-launchpad/
|
|
164
|
+
├── odoo/ # Odoo Community (compartido entre proyectos)
|
|
165
|
+
├── enterprise/ # Enterprise addons (opcional, compartido)
|
|
166
|
+
├── tenants/
|
|
167
|
+
│ ├── cliente-a/ # Proyecto de cliente A (repo independiente)
|
|
168
|
+
│ └── cliente-b/ # Proyecto de cliente B (repo independiente)
|
|
169
|
+
├── config/
|
|
170
|
+
│ └── odoo/odoo.conf # Configuracion central de Odoo
|
|
171
|
+
├── docker/
|
|
172
|
+
│ └── docker-compose.yaml
|
|
173
|
+
├── .vscode/
|
|
174
|
+
│ ├── launch.json # Configs de debug: Community, Shell, Update, Install + tenants
|
|
175
|
+
│ ├── settings.json # Python paths, venv
|
|
176
|
+
│ └── tasks.json # docker-compose-up
|
|
177
|
+
├── .venv-v19/ # Entorno virtual (uno por version de Odoo)
|
|
178
|
+
├── .env
|
|
179
|
+
└── oolab.yaml # Fuente de verdad del workspace
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Ejemplo de uso
|
|
185
|
+
|
|
186
|
+
### Crear workspace con Enterprise y un cliente
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
$ cd ~/Projects
|
|
190
|
+
$ oolab init
|
|
191
|
+
|
|
192
|
+
Odoo Lab v0.1.0 | IKU Solutions SAS | https://www.iku.solutions
|
|
193
|
+
|
|
194
|
+
Version de Odoo [16 / 17 / 18 / 19] (19): 19
|
|
195
|
+
Incluir Enterprise? [y/n]: y
|
|
196
|
+
URL del repositorio Enterprise: git@github.com:odoo/enterprise.git
|
|
197
|
+
Agregar un proyecto de cliente ahora? [y/n]: y
|
|
198
|
+
Nombre del proyecto: Mi Cliente ERP
|
|
199
|
+
Clonar desde un repositorio existente? [y/n]: y
|
|
200
|
+
URL del repositorio: git@github.com:org/mi-cliente-erp.git
|
|
201
|
+
|
|
202
|
+
...spinners y progreso...
|
|
203
|
+
|
|
204
|
+
Workspace listo!
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Agregar otro proyecto despues
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
$ cd odoo-launchpad
|
|
211
|
+
$ oolab add
|
|
212
|
+
|
|
213
|
+
Nombre del proyecto: Otro Cliente
|
|
214
|
+
Version de Odoo [16 / 17 / 18 / 19] (19): 18
|
|
215
|
+
Clonar desde un repositorio existente? [y/n]: n
|
|
216
|
+
|
|
217
|
+
Proyecto 'Otro Cliente' agregado correctamente.
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Contribuir
|
|
223
|
+
|
|
224
|
+
Las contribuciones son bienvenidas! Este es un proyecto open source mantenido por [IKU Solutions SAS](https://www.iku.solutions).
|
|
225
|
+
|
|
226
|
+
### Como contribuir
|
|
227
|
+
|
|
228
|
+
1. **Fork** el repositorio
|
|
229
|
+
2. Crea tu **branch** (`git checkout -b feature/mi-feature`)
|
|
230
|
+
3. **Commit** tus cambios (`git commit -m 'feat: descripcion'`)
|
|
231
|
+
4. **Push** al branch (`git push origin feature/mi-feature`)
|
|
232
|
+
5. Abre un **Pull Request**
|
|
233
|
+
|
|
234
|
+
### Reportar issues
|
|
235
|
+
|
|
236
|
+
Si encuentras un bug o tienes una sugerencia, abre un [issue](https://github.com/ikusolutions/odoo-lab/issues).
|
|
237
|
+
|
|
238
|
+
### Guias de desarrollo
|
|
239
|
+
|
|
240
|
+
- Usa [Conventional Commits](https://www.conventionalcommits.org/) para mensajes de commit
|
|
241
|
+
- El codigo sigue las convenciones de [Ruff](https://docs.astral.sh/ruff/) con line-length=88
|
|
242
|
+
- Pre-commit hooks recomendados para calidad de codigo
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Roadmap
|
|
247
|
+
|
|
248
|
+
- [ ] Soporte para multiples versiones de Odoo en un mismo workspace
|
|
249
|
+
- [ ] Comando `oolab upgrade` para actualizar el framework
|
|
250
|
+
- [ ] Comando `oolab db` para gestionar bases de datos
|
|
251
|
+
- [ ] Soporte para PyCharm/IntelliJ
|
|
252
|
+
- [ ] Publicacion en PyPI
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Licencia
|
|
257
|
+
|
|
258
|
+
Este proyecto esta licenciado bajo [LGPL-3.0-or-later](https://www.gnu.org/licenses/lgpl-3.0.html).
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
Copyright (c) 2026 IKU Solutions SAS
|
|
262
|
+
Autor: Yan Chirino <yan.chirino@iku.solutions>
|
|
263
|
+
Website: https://www.iku.solutions
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
<p align="center">
|
|
269
|
+
Hecho con <b>Python</b> + <b>Typer</b> + <b>Rich</b> por <a href="https://www.iku.solutions"><b>IKU Solutions</b></a>
|
|
270
|
+
</p>
|