# HG changeset patch
# User Vincent Hatakeyama <vincent.hatakeyama@xcg-consulting.fr>
# Date 1639394750 -3600
#      Mon Dec 13 12:25:50 2021 +0100
# Node ID 591715545a0cd8c8e768e2c9a9be7bfff433f4a0
# Parent  1eb9dd7ea37d3297a950b3d8db177397d2e09e3e
✨docker_build: tag if present, and push

diff --git a/NEWS.rst b/NEWS.rst
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -7,6 +7,10 @@
 
 Allow not setting the database owner in do_tests.
 
+Remove static image support.
+
+``docker_build`` also tag with any current tag if any.
+
 13.3.0
 ------
 
diff --git a/odoo_scripts/docker_build.py b/odoo_scripts/docker_build.py
--- a/odoo_scripts/docker_build.py
+++ b/odoo_scripts/docker_build.py
@@ -18,9 +18,9 @@
 
 _logger = logging.getLogger(__name__)
 
-__version__ = "1.0.0"
+__version__ = "1.1.0"
 __date__ = "2018-04-04"
-__updated__ = "2020-09-11"
+__updated__ = "2021-12-13"
 
 
 def __parser():
@@ -34,7 +34,7 @@
     program_license = """%s
 
       Created by Vincent Hatakeyama on %s.
-      Copyright 2018, 2019, 2020 XCG Consulting. All rights reserved.
+      Copyright 2018, 2019, 2020, 2021 XCG Consulting. All rights reserved.
 
       Licensed under the MIT License
 
@@ -101,8 +101,8 @@
     registry = c.registry
     project = c.image
     odoo_type = c.odoo_type
-    image = "%s/%s:latest" % (registry, project)
-    _logger.debug("Docker image: %s", image)
+    repository = f"{registry}/{project}"
+    _logger.debug("Docker repository: %s", repository)
     # TODO ensureconf
     if ensureconf:
         raise NotImplementedError
@@ -118,11 +118,16 @@
     signal.signal(signal.SIGINT, signal_handler)
     signal.signal(signal.SIGTERM, signal_handler)
 
+    # used to retag
+    tags = []
+
     buildargs = dict()
     if os.path.exists(".hg"):
         tags = check_output(["hg", "identify", "--tags"]).decode()
+        buildargs["VERSION"] = tags
+        buildargs["SENTRY_RELEASE"] = tags
         if tags:
-            buildargs["VERSION"] = tags
+            tags = tags.split()
         buildargs["VCS_URL"] = check_output(
             ["hg", "paths", "default"]
         ).decode()
@@ -181,7 +186,7 @@
         rm=True,
         pull=pull,
         buildargs=buildargs,
-        tag=image,
+        tag=repository,
         dockerfile=dockerfile,
     )
     for line in builder:
@@ -194,11 +199,23 @@
             return 1
     if dev:
         call(["rm", dockerfile])
+    # retag
+    for tag in tags:
+        _logger.info("Docker with tag %s", tag)
+        docker_client.images.get(repository).tag(repository, tag=tag)
 
-    # TODO docker tag with tags/bookmarks (unused so maybe no need)
-    # TODO docker push (only when asked for)
     if push:
-        raise NotImplementedError
+        _logger.info("Docker push %s", repository)
+        for line in docker_client.images.push(
+            repository, stream=True, decode=True
+        ):
+            _logger.debug(line)
+        for tag in tags:
+            _logger.info("Docker push %s:%s", repository, tag)
+            for line in docker_client.images.push(
+                repository, tag=tag, stream=True, decode=True
+            ):
+                _logger.debug(line)
     # XXX call cleanup more intelligently
     signal_handler(0, None)
     return 0