@@ -16,6 +16,8 @@ function help-table() {
1616 printf " $COLUMN " " all" " " " Run all tasks."
1717 printf " $COLUMN " " install" " " " Setup the local environment."
1818 printf " $COLUMN " " lint" " " " Run pre-commit."
19+ printf " $COLUMN " " build" " " " Build python packages with whool."
20+ printf " $COLUMN " " publish" " " " Publish python packages to PyPi."
1921 printf " $COLUMN " " docs" " " " Update index.html."
2022 printf " $COLUMN " " source" " " " Source the Python virtual env."
2123 printf " $COLUMN " " version" " " " Show version of required tools."
@@ -40,10 +42,10 @@ function version() {
4042}
4143
4244function install() {
43- echo " Setup venv and install python dependencies "
45+ echo " Setup venv and install OCA maintainer tools "
4446 uv venv env
4547 source env/bin/activate
46- uv pip install pre-commit rst2html5
48+ uv pip install git+https://github.com/OCA/maintainer-tools
4749}
4850
4951function lint() {
@@ -53,6 +55,67 @@ function lint() {
5355 pre-commit run --all-files --show-diff-on-failure --color=always
5456}
5557
58+ build () {
59+ source env/bin/activate
60+
61+ ROOT_DIR=" $( pwd) "
62+ METAPACKAGE_DIR=" $ROOT_DIR /setup/_metapackage"
63+ PUBLISH_DIR=" $ROOT_DIR /dist"
64+ rm -rf " $PUBLISH_DIR " /*
65+
66+ SERVER_NAME=" $( basename " $ROOT_DIR " ) "
67+ METAPACKAGE_NAME=" odoo-apps-$( echo " $SERVER_NAME " | sed ' s/_/-/g' ) "
68+
69+ oca-gen-metapackage " $METAPACKAGE_NAME "
70+
71+ ADDONS=()
72+ mapfile -t ADDONS < <( find . -maxdepth 2 -type f -name " pyproject.toml" | xargs dirname | sed ' s|^\./||' )
73+ for ADDON in " ${ADDONS[@]} " ; do
74+ cd " $ROOT_DIR /$ADDON "
75+ echo " Building $ADDON "
76+ uv build
77+ cp dist/* .whl " $PUBLISH_DIR /" 2> /dev/null || true
78+ cp dist/* .tar.gz " $PUBLISH_DIR /" 2> /dev/null || true
79+ cd " $ROOT_DIR "
80+ done
81+
82+ echo " Installing local wheels for metapackage resolution..."
83+ uv pip install " $PUBLISH_DIR " /* .whl 2> /dev/null || true
84+
85+ cd " $METAPACKAGE_DIR "
86+ echo " Building $METAPACKAGE_NAME "
87+ uv build
88+
89+ cp dist/* .whl " $PUBLISH_DIR /"
90+ cp dist/* .tar.gz " $PUBLISH_DIR /"
91+
92+ ls " $PUBLISH_DIR /"
93+ }
94+
95+ publish () {
96+ source env/bin/activate
97+ ROOT_DIR=" $( pwd) "
98+ PUBLISH_DIR=" $ROOT_DIR /dist"
99+
100+ set +e
101+ echo " Publishing from $PUBLISH_DIR to PyPI..."
102+
103+ for WHEEL in " $PUBLISH_DIR " /* .whl; do
104+ if [ ! -f " $WHEEL " ]; then
105+ continue
106+ fi
107+
108+ echo " Publishing: $WHEEL "
109+ uv publish " $WHEEL " --username " __token__" --password " $PYPI_TOKEN "
110+
111+ if [ $? -ne 0 ]; then
112+ echo " Failed to publish $WHEEL ."
113+ fi
114+ done
115+
116+ echo " All wheels published successfully."
117+ }
118+
56119function docs() {
57120 source env/bin/activate
58121
0 commit comments