Unified CLI tool for native Odoo development environment management
Project description
odoodev — Unified Odoo Development CLI
Deutsche Dokumentation
Projektübersicht
odoodev ist ein einheitliches CLI-Tool für die Verwaltung nativer Odoo-Entwicklungsumgebungen über mehrere Versionen hinweg (v16–v19). Es ersetzt eine Vielzahl manueller Skripte, Shell-Funktionen und Konfigurationsdateien durch ein konsistentes Werkzeug mit vollständigem Lifecycle-Management.
Hauptfunktionen:
- Multi-Version Support (v16, v17, v18, v19)
- Automatische Versionserkennung aus dem aktuellen Verzeichnis
- Interaktiver Setup-Wizard für die Ersteinrichtung
- Native Entwicklung mit UV Virtual Environments
- Repository-Management mit frei benennbaren Sections in repos.yaml
- Datenbank-Backup & -Wiederherstellung (ZIP, 7z, tar, SQL)
- Docker-Service-Verwaltung (PostgreSQL, Mailpit)
- Shell-Integration mit Tab-Completions (Fish, Bash, Zsh)
- YAML-Playbook-Automation für wiederkehrende Workflows
- Odoo-Konfigurationsgenerierung mit Template-System
Schnellstart
# 1. Installieren
uv tool install odoodev-equitania
# 2. Setup-Wizard (einmalig)
odoodev setup
# 3. Umgebung initialisieren
odoodev init 18
# 4. Shell-Integration installieren (Tab-Completions!)
odoodev shell-setup
# 5. Odoo starten
odoodev start 18 --dev
Detaillierte Installationsanleitung: usage/setup.md
Befehle im Überblick
| Befehl | Beschreibung | Details |
|---|---|---|
odoodev setup |
Interaktiver Setup-Wizard | setup.md |
odoodev init [VERSION] |
Neue Entwicklungsumgebung initialisieren | setup.md |
odoodev start [VERSION] |
Odoo-Server starten | start.md |
odoodev stop [VERSION] |
Odoo-Server und Docker stoppen | start.md |
odoodev repos [VERSION] |
Repositories klonen/aktualisieren | repos.md |
odoodev pull [VERSION] |
Schneller git pull aller Repos |
repos.md |
odoodev db [SUB] [VERSION] |
Datenbankoperationen (backup, restore, list, drop) | db.md |
odoodev env [SUB] [VERSION] |
.env-Dateiverwaltung (setup, check, show, dir) | setup.md |
odoodev venv [SUB] [VERSION] |
Virtual Environment verwalten | venv.md |
odoodev docker [SUB] [VERSION] |
Docker-Services steuern | docker.md |
odoodev config [SUB] |
Konfiguration und Versionen | config.md |
odoodev run [PLAYBOOK] |
YAML-Playbook oder Inline-Steps | run.md |
odoodev shell-setup |
Shell-Completions und Wrapper installieren | shell.md |
Unterstützte Versionen
| Version | Python | PostgreSQL | DB Port | Odoo Port | Gevent | Mailpit |
|---|---|---|---|---|---|---|
| v16 | 3.12 | 16.11 | 16432 | 16069 | 16072 | 16025 |
| v17 | 3.12 | 16.11 | 17432 | 17069 | 17072 | 17025 |
| v18 | 3.13 | 16.11 | 18432 | 18069 | 18072 | 18025 |
| v19 | 3.13 | 17.4 | 19432 | 19069 | 19072 | 19025 |
Port-Schema: {version}{service} — z.B. v18: DB=18432, Odoo=18069
Verzeichnisstruktur
~/.config/odoodev/
├── config.yaml # [GENERATED] odoodev setup
└── versions-override.yaml # [MANUELL] Optionale Overrides
~/gitbase/vXX/ # (oder eigener base_dir)
├── vXX-server/ # [REPOS] Odoo-Server
│ └── odoo-bin
├── vXX-dev/
│ ├── devXX_native/ # [INIT] Arbeitsverzeichnis
│ │ ├── .env # [GENERATED]
│ │ ├── docker-compose.yml # [GENERATED]
│ │ ├── .venv/ # [GENERATED]
│ │ └── requirements.txt # [MANUELL]
│ ├── conf/odooXX_template.conf # [MANUELL]
│ └── scripts/repos.yaml # [MANUELL]
├── myconfs/odoo_YYMMDD.conf # [GENERATED]
└── vXX-addons/, vXX-oca/, ... # [REPOS]
Legende: [GENERATED] = von odoodev erzeugt | [REPOS] = per git clone | [MANUELL] = vom Benutzer
Datenfluss
odoodev setup → config.yaml (Basispfad, DB-Credentials)
↓
odoodev init → Verzeichnisse + .env + docker-compose.yml + .venv + repos
↓
odoodev repos → repos.yaml → git clone → odoo_YYMMDD.conf
↓
odoodev start → .env laden → Voraussetzungen prüfen → odoo-bin starten
Architektur
odoodev/
├── cli.py # CLI-Einstiegspunkt (Click)
├── output.py # Rich-Konsolenausgabe
├── commands/ # Click-Commands (init, start, stop, repos, db, ...)
├── core/ # Kernmodule (version_registry, database, git_ops, ...)
├── templates/ # Jinja2-Templates (docker-compose, .env, odoo.conf)
└── data/
├── versions.yaml # Versionsregistry
└── examples/playbooks/ # Beispiel-Playbooks
Obsolete Komponenten
odoodev ersetzt:
| Alt | Neu |
|---|---|
start-native.sh |
odoodev start |
.env.template |
odoodev env setup |
docker-compose.yml (manuell) |
odoodev init |
Fish-Funktionen (odoo-env, odoo-start) |
odoodev CLI |
Fish-Aliase (dev16, dev18) |
odoodev-activate / oda |
Manuelle git clone |
odoodev repos |
docker-compose-arm64.yml |
odoodev init (Plattform-Detection) |
Entwicklung
uv venv && source .venv/bin/activate.fish
uv pip install -e ".[dev]"
pytest # Tests (290+)
ruff check . && ruff format --check . # Linting
mypy odoodev # Type-Check
uv build # Paket bauen
Lizenz
AGPL-3.0-or-later — Equitania Software GmbH
Kontakt
- Website: https://www.equitania.de
- E-Mail: info@equitania.de
English Documentation
Project Overview
odoodev is a unified CLI tool for native Odoo development environment management across versions (v16–v19). It replaces a variety of manual scripts, shell functions, and configuration files with a consistent tool providing complete lifecycle management.
Key Features:
- Multi-version support (v16, v17, v18, v19)
- Automatic version detection from current directory
- Interactive setup wizard for first-time configuration
- Native development with UV virtual environments
- Repository management with freely nameable sections in repos.yaml
- Database backup & restoration (ZIP, 7z, tar, SQL)
- Docker service management (PostgreSQL, Mailpit)
- Shell integration with tab completions (Fish, Bash, Zsh)
- YAML playbook automation for recurring workflows
- Odoo configuration generation with template system
Quick Start
# 1. Install
uv tool install odoodev-equitania
# 2. Setup wizard (one-time)
odoodev setup
# 3. Initialize environment
odoodev init 18
# 4. Install shell integration (tab completions!)
odoodev shell-setup
# 5. Start Odoo
odoodev start 18 --dev
Detailed installation guide: usage/setup.md
Command Reference
| Command | Description | Details |
|---|---|---|
odoodev setup |
Interactive setup wizard | setup.md |
odoodev init [VERSION] |
Initialize new development environment | setup.md |
odoodev start [VERSION] |
Start Odoo server | start.md |
odoodev stop [VERSION] |
Stop Odoo server and Docker | start.md |
odoodev repos [VERSION] |
Clone/update repositories | repos.md |
odoodev pull [VERSION] |
Quick git pull across all repos |
repos.md |
odoodev db [SUB] [VERSION] |
Database operations (backup, restore, list, drop) | db.md |
odoodev env [SUB] [VERSION] |
.env file management (setup, check, show, dir) | setup.md |
odoodev venv [SUB] [VERSION] |
Virtual environment management | venv.md |
odoodev docker [SUB] [VERSION] |
Docker service control | docker.md |
odoodev config [SUB] |
Configuration and versions | config.md |
odoodev run [PLAYBOOK] |
YAML playbook or inline steps | run.md |
odoodev shell-setup |
Install shell completions and wrappers | shell.md |
Supported Versions
| Version | Python | PostgreSQL | DB Port | Odoo Port | Gevent | Mailpit |
|---|---|---|---|---|---|---|
| v16 | 3.12 | 16.11 | 16432 | 16069 | 16072 | 16025 |
| v17 | 3.12 | 16.11 | 17432 | 17069 | 17072 | 17025 |
| v18 | 3.13 | 16.11 | 18432 | 18069 | 18072 | 18025 |
| v19 | 3.13 | 17.4 | 19432 | 19069 | 19072 | 19025 |
Port schema: {version}{service} — e.g. v18: DB=18432, Odoo=18069
Directory Structure
~/.config/odoodev/
├── config.yaml # [GENERATED] odoodev setup
└── versions-override.yaml # [MANUAL] Optional overrides
~/gitbase/vXX/ # (or custom base_dir)
├── vXX-server/ # [REPOS] Odoo server
│ └── odoo-bin
├── vXX-dev/
│ ├── devXX_native/ # [INIT] Working directory
│ │ ├── .env # [GENERATED]
│ │ ├── docker-compose.yml # [GENERATED]
│ │ ├── .venv/ # [GENERATED]
│ │ └── requirements.txt # [MANUAL]
│ ├── conf/odooXX_template.conf # [MANUAL]
│ └── scripts/repos.yaml # [MANUAL]
├── myconfs/odoo_YYMMDD.conf # [GENERATED]
└── vXX-addons/, vXX-oca/, ... # [REPOS]
Legend: [GENERATED] = created by odoodev | [REPOS] = via git clone | [MANUAL] = user-provided
Data Flow
odoodev setup → config.yaml (base path, DB credentials)
↓
odoodev init → directories + .env + docker-compose.yml + .venv + repos
↓
odoodev repos → repos.yaml → git clone → odoo_YYMMDD.conf
↓
odoodev start → load .env → check prerequisites → start odoo-bin
Architecture
odoodev/
├── cli.py # CLI entry point (Click)
├── output.py # Rich console output
├── commands/ # Click commands (init, start, stop, repos, db, ...)
├── core/ # Core modules (version_registry, database, git_ops, ...)
├── templates/ # Jinja2 templates (docker-compose, .env, odoo.conf)
└── data/
├── versions.yaml # Version registry
└── examples/playbooks/ # Example playbooks
Obsolete Components
odoodev replaces:
| Old | New |
|---|---|
start-native.sh |
odoodev start |
.env.template |
odoodev env setup |
docker-compose.yml (manual) |
odoodev init |
Fish functions (odoo-env, odoo-start) |
odoodev CLI |
Fish aliases (dev16, dev18) |
odoodev-activate / oda |
Manual git clone |
odoodev repos |
docker-compose-arm64.yml |
odoodev init (platform detection) |
Development
uv venv && source .venv/bin/activate.fish
uv pip install -e ".[dev]"
pytest # Tests (290+)
ruff check . && ruff format --check . # Linting
mypy odoodev # Type checking
uv build # Build package
License
AGPL-3.0-or-later — Equitania Software GmbH
Contact
- Website: https://www.equitania.de
- Email: info@equitania.de
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file odoodev_equitania-0.4.19.tar.gz.
File metadata
- Download URL: odoodev_equitania-0.4.19.tar.gz
- Upload date:
- Size: 115.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed4313c7202bdc5e17ecabc6860a4c33f148b2f41d5118ff37ae27dc1f6cbbe1
|
|
| MD5 |
0f6e1f41604c472a5398f0d6d5eea536
|
|
| BLAKE2b-256 |
783c525672d8d9ee7813efef0120613685b5dae491f950ca460d421beab81ecb
|
File details
Details for the file odoodev_equitania-0.4.19-py3-none-any.whl.
File metadata
- Download URL: odoodev_equitania-0.4.19-py3-none-any.whl
- Upload date:
- Size: 106.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63f0ecb323a87d19523b6c4b4332e5e77243d4e317e85c7c3b307b3d5a8a9777
|
|
| MD5 |
a3afa7c0674c955c418226172c69393b
|
|
| BLAKE2b-256 |
7d97063d7f06f9357d415e6db2b289c4784428b9b3264d0cce10612b8dfd689c
|