From 02f78dc3d7bd69a8279a4170a3b98a200cdeb55f Mon Sep 17 00:00:00 2001
From: Muayyad alsadi <alsadi@gmail.com>
Date: Fri, 10 Dec 2021 02:06:43 +0200
Subject: [PATCH] FIXES #333: when volumes are merged, remove duplicates

---
 podman_compose.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/podman_compose.py b/podman_compose.py
index 215e7f5..7a39366 100755
--- a/podman_compose.py
+++ b/podman_compose.py
@@ -867,7 +867,15 @@ def rec_merge_one(target, source):
         if type(value2)!=type(value):
             raise ValueError("can't merge value of {} of type {} and {}".format(key, type(value), type(value2)))
         if is_list(value2):
-            value.extend(value2)
+            if key == 'volumes':
+                # clean duplicate mount targets
+                pts = set([ v.split(':', 1)[1] for v in value2 if ":" in v ])
+                del_ls = [ ix for (ix, v) in enumerate(value) if ":" in v and v.split(':', 1)[1] in pts ]
+                for ix in reversed(del_ls):
+                    del value[ix]
+                value.extend(value2)
+            else:
+                value.extend(value2)
         elif is_dict(value2):
             rec_merge_one(value, value2)
         else: