# 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]",