odoo-addons-path tự nhận diện các cấu trúc dự án Odoo phổ biến và tạo addons_path theo đúng thứ tự, để lập trình viên không phải thiết lập thủ công.

Thiết lập addons_path trong dự án Odoo trông có vẻ đơn giản, cho đến khi phải quản lý nhiều repository, submodule và nhiều thứ khác. Mỗi cấu trúc dự án sắp xếp addon theo cách riêng, và thứ tự các thư mục rất quan trọng: chỉ một thư mục đặt sai vị trí cũng có thể âm thầm ghi đè module hoặc nạp nhầm module tùy chỉnh.

odoo-addons-path giúp gỡ bỏ gánh nặng đó. Công cụ tự nhận diện cấu trúc dự án và tạo addons_path cuối cùng theo đúng thứ tự, để lập trình viên không phải thiết lập thủ công và dễ mắc lỗi.

odoo-addons-path là gì?

odoo-addons-path là một công cụ dòng lệnh chỉ làm đúng một việc:

  • Tự nhận diện các cấu trúc dự án Odoo phổ biến: Camptocamp, Doodba, Odoo.sh và Trobz
  • Tạo addons_path chính xác, đúng thứ tự và sẵn sàng sử dụng
  • Áp dụng cùng một logic nhận diện cho mọi cấu trúc thông qua mẫu thiết kế Chain of Responsibility (tìm hiểu thêm về mẫu thiết kế này )

Công cụ tập trung vào một việc và làm tốt việc đó: tạo ra addons_path đáng tin cậy, dễ dự đoán cho mọi codebase Odoo.

Vì sao chúng tôi xây dựng công cụ này

Chưa có một cấu trúc chuẩn chung cho các dự án Odoo. Mỗi đội ngũ áp dụng một cấu trúc khác nhau, chẳng hạn:

Trobz

├── odoo/        # Odoo core
├── addons/      # Third-party repos
└── project/     # Custom modules

Doodba

odoo/custom/src/
├── odoo/        # Odoo core
├── private/     # Custom modules
└── submodule/   # Third-party repos

Odoo.sh

├── odoo/        # Odoo core
├── enterprise/
├── themes/
└── user/        # Submodules

Vì mỗi cấu trúc cần được xử lý theo cách khác nhau, việc tự tạo addons_path rất mất công và dễ sai. odoo-addons-path ra đời để chuẩn hóa quy trình này cho các cấu trúc phổ biến.

Cách sử dụng

Bắt đầu nhanh

Trong thư mục dự án Odoo, chạy:

odoo-addons-path

Công cụ sẽ xuất ra addons_path sẵn sàng sử dụng. Nếu dự án theo một trong các cấu trúc được hỗ trợ, việc nhận diện sẽ hoạt động ngay. Các cấu trúc được hỗ trợ sẵn:

  • Camptocamp (cả cấu trúc cũ và mới)
  • Doodba (phát triển dựa trên Docker)
  • Odoo.sh (nền tảng hosting chính thức của Odoo)
  • Trobz

Thêm --verbose để xem cách các thư mục được phân loại.

Đường dẫn tùy chỉnh

Có thể bỏ qua cơ chế nhận diện bằng --addons-dir. Tùy chọn này hỗ trợ nhiều đường dẫn và glob pattern.

Tìm addon theo phiên bản:

odoo-addons-path --addons-dir "./oca/*/18.0"

Nhiều thư mục repository:

odoo-addons-path --addons-dir "./oca/*/18.0,./custom"

Cũng có thể chỉ định đường dẫn codebase qua biến môi trường:

export CODEBASE=/path/to/project
odoo-addons-path

Thứ tự các thư mục có quan trọng không?

Có. Công cụ đảm bảo:

  • Module gốc của Odoo luôn đứng đầu để không bị ghi đè nhầm. odoo/addonsodoo/odoo/addons luôn nằm ở đầu kết quả.
  • Các thư mục do người dùng chỉ định giữ nguyên thứ tự. Những đường dẫn truyền qua --addons-dir giữ đúng thứ tự đã nhập, nhờ đó có thể ưu tiên repository mong muốn. Điều này đặc biệt quan trọng khi một dự án cần ưu tiên một thư mục addon cụ thể.
  • Các thư mục tự nhận diện được sắp xếp theo thứ tự chữ cái, giúp kết quả nhất quán và dễ dự đoán.

Kết luận

odoo-addons-path loại bỏ phần việc thủ công, cùng những rủi ro tiềm ẩn, khi tạo addons_path cho Odoo. Dù dự án theo cấu trúc chuẩn hay cấu trúc riêng, công cụ đều nhận diện và sắp xếp đúng thứ tự các thư mục addon: module lõi của Odoo luôn được ưu tiên, và vẫn có thể ưu tiên từng repository khi cần.

Dùng thử:

uv tool install odoo-addons-path
odoo-addons-path /path/to/your/project