# HG changeset patch # User Vincent Hatakeyama <vincent.hatakeyama@xcg-consulting.fr> # Date 1668418345 -3600 # Mon Nov 14 10:32:25 2022 +0100 # Node ID 6add84c9da8a15e39a3fa240361fd0e5d8575298 # Parent 7b91ef3af463f3fda6f240e00b504b3113ad5854 ✨ docker_build_doc diff --git a/NEWS.rst b/NEWS.rst --- a/NEWS.rst +++ b/NEWS.rst @@ -2,6 +2,11 @@ History ======= +16.10.0 +------- + +docker_doc_build: new command to build module documentation. + 16.9.1 ------ diff --git a/README.rst b/README.rst --- a/README.rst +++ b/README.rst @@ -32,6 +32,13 @@ This is part of the docker section. +docker_build_doc +---------------- + +Build documentation in docker. It runs `make html` so could potentially be used to do something else. + +This is part of the docker section. + docker_isort ------------ diff --git a/odoo_scripts/docker_flake8.py b/odoo_scripts/docker_build_doc.py copy from odoo_scripts/docker_flake8.py copy to odoo_scripts/docker_build_doc.py --- a/odoo_scripts/docker_flake8.py +++ b/odoo_scripts/docker_build_doc.py @@ -1,22 +1,25 @@ #!/usr/bin/env python3 -# vim: set shiftwidth=4 softtabstop=4: -"""Run flake8 in a docker +"""Build documentation in a docker """ import argparse import logging import os import sys -from .config import ODOO_15, Config +from .config import Config +from .docker_build import add_build_options, build_local_image, get_build_options from .docker_client import DockerClient +from .docker_prettier import get_volumes from .parsing import apply, basic_parser -__version__ = "1.2.0" -__date__ = "2020-09-10" -__updated__ = "2022-01-27" +__version__ = "1.0.0" +__date__ = "2022-11-10" +__updated__ = "2022-11-10" _logger = logging.getLogger(__name__) +_DIR_DEST = "build_doc_dir" + def __parser(): program_version = __version__ @@ -29,7 +32,7 @@ program_license = """%s Created by Vincent Hatakeyama on %s. - Copyright 2020, 2022 XCG Consulting. All rights reserved. + Copyright 2022 XCG Consulting. All rights reserved. Licensed under the MIT License @@ -45,69 +48,62 @@ return parser -def parser_add_flake8_group(parser: argparse.ArgumentParser): - """Add flake8 option (--flake8/--no-flake8) to the given parser. - Defaults to not running flake8.""" - flake8_group = parser.add_mutually_exclusive_group() - flake8_group.add_argument( - "--flake8", - help="Run flake8", - action="store_true", - dest="flake8", - default=False, - ) - flake8_group.add_argument( - "--no-flake8", - help="Do not run flake8 [default]", - action="store_false", - dest="flake8", - default=False, +def parser_add_builddoc(parser: argparse.ArgumentParser): + """Add isort option (--isort/--no-isort) to the given parser. + Defaults to not using isort.""" + parser.add_argument( + help="Create documentation on given directory (relative path, for example " + "github.com/OCA/server-auth)", + dest=_DIR_DEST, ) -def apply_flake8(namespace: argparse.Namespace, odoo_type: str): - """Run flake8 if the option was set.""" - if namespace.flake8: - flake8(odoo_type) +def apply_build_doc(namespace: argparse.Namespace, config: Config = None): + """Run isort if the option was set.""" + if _DIR_DEST in namespace: + return build_doc( + directory=getattr(namespace, _DIR_DEST), + config=config, + ) + return 0 + + +def build_doc(directory: str = "", config: Config = None): + """Run isort""" + if config is None: + config = Config() + + # determine image to use based on odoo version + repository = config.local_image + tag = config.local_tag + + pwd = os.environ["PWD"] + volumes, path = get_volumes(pwd, directory, write=True) + _logger.info("Building documentation in %s", path) + return DockerClient.run( + repository, + tag, + { + "entrypoint": "make", + "user": os.getuid(), + "command": ["html"], + "volumes": volumes, + "working_dir": path, + }, + False, + ) def main(argv=None): """Copy modules for a build, callable version that parses arguments""" parser = __parser() + add_build_options(parser) + parser_add_builddoc(parser) nmspc = parser.parse_args(argv) - apply(nmspc) config = Config() - odoo_type = config.odoo_type - return flake8(odoo_type) - - -def flake8(odoo_type: str, pull: bool = True): - """Run flake8""" - # determine image to use based on odoo version - repository = "quay.orus.io/odoo/odoo" - if odoo_type in ("odoo7", "odoo8", "odoo9", "odoo10"): - repository = "xcgd/flake8" - tag = "2" - elif odoo_type == ODOO_15: - tag = "15.0" - else: - repository = "xcgd/flake8" - tag = "3" - - _logger.info("Running flake8") - pwd = os.environ["PWD"] - return DockerClient.run( - repository, - tag, - { - "entrypoint": "flake8", - "command": ["/mnt"], - "volumes": {pwd: {"bind": "/mnt", "mode": "ro"}}, - "working_dir": "/mnt", - }, - pull, - {"/mnt": pwd}, - ) + apply(nmspc) + build_local_image(get_build_options(nmspc)) + return apply_build_doc(nmspc, config=config) if __name__ == "__main__": diff --git a/setup.py b/setup.py --- a/setup.py +++ b/setup.py @@ -45,6 +45,7 @@ "do_tests=odoo_scripts.do_tests:main", "docker_black=odoo_scripts.docker_black:main [docker]", "docker_build=odoo_scripts.docker_build:main [docker]", + "docker_build_doc=odoo_scripts.docker_build_doc:main [docker]", "docker_build_clean=odoo_scripts.docker_build_clean:main", "docker_build_copy=odoo_scripts.docker_build_copy:main", "docker_flake8=odoo_scripts.docker_flake8:main [docker]",