From f09cdc3e94c4bb1468559faf987265a173d6605b Mon Sep 17 00:00:00 2001
From: Miguel Angel Reina Ortega <miguelangel.reinaortega@etsi.org>
Date: Wed, 16 Aug 2023 22:32:11 +0200
Subject: [PATCH] Fix for determining the clauses being changed

---
 generateChangemarks/changemarks.py | 38 ++++++++++++++++++++----------
 generate_changemarks.sh            |  1 +
 2 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/generateChangemarks/changemarks.py b/generateChangemarks/changemarks.py
index 5f7ee2d..941b94d 100644
--- a/generateChangemarks/changemarks.py
+++ b/generateChangemarks/changemarks.py
@@ -160,13 +160,13 @@ https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.st
                 lines_added = lines_added + change_lines_added
                 lines_removed = lines_removed + change_lines_removed
                 # Check the previous changed_clause
-                if (changed_clause.from_id <= change_start_line - lines_added + lines_removed) and (changed_clause.to_id + lines_added - lines_removed >= change_end_line):
+                if (changed_clause.from_id <= change_start_line) and (changed_clause.to_id + lines_added - lines_removed >= change_end_line):
                     generateMDforChange(progress, mdLines, changed_clause, change, outDirectory, True)
-                    break
+                    continue
                 i = 0 
                 # Check all clauses
                 for clause in clauses:
-                    if (clause.from_id <= change_start_line - lines_added + lines_removed) and (clause.to_id + lines_added - lines_removed >= change_end_line):
+                    if (clause.from_id <= change_start_line) and (clause.to_id + lines_added - lines_removed >= change_end_line):
                         changed_clause = clauses.pop(i)
                         changed_clauses.append(clause)
                         generateMDforChange(progress, mdLines, changed_clause, change, outDirectory, False)
@@ -185,21 +185,33 @@ def changeDetails(change) -> (int, int, int, int):
     change_start_line = change.target_start
     change_end_line = change_start_line
     for line in change:
+        print(vars(line))
         if line.is_added or line.is_removed:
-            if change_start_line == change.target_start:
-                change_start_line = change.target_start + i
-                change_end_line = change_end_line + i
-            else:
-                change_end_line = change_end_line + i
-            i = 0
+            #if change_start_line == change.target_start:
+            #    change_start_line = change.target_start + i
+            #    change_end_line = change_end_line + i
+            #else:
+            #    change_end_line = change_end_line + i
+            #i = 0
             if line.is_added:
                 lines_added = lines_added + 1
             elif line.is_removed:
                 lines_removed = lines_removed + 1
+            if change_start_line == change.target_start:
+                if line.is_added:
+                    change_start_line = line.target_line_no
+                    change_end_line = change_start_line
+                elif line.is_removed:
+                    change_start_line = line.source_line_no
+                    change_end_line = change_start_line
+            else:
+                if line.is_added:
+                    change_end_line = line.target_line_no
+                elif line.is_removed:
+                    change_end_line = line.source_line_no
+        #i = i + 1
 
-        i = i + 1
-
-    change_end_line = change_end_line - lines_removed
+    #change_end_line = change_end_line - lines_removed
     return change_start_line, change_end_line, lines_added, lines_removed
 
 def generateMDforChange(progress:Progress, mdLines:list[str],changed_clause:Clause, change, outDirectory:str, existing_clause:bool):
@@ -217,7 +229,7 @@ https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.st
             clauseMDlines.append(mdLines[index]+'\n')
             index = index + 1
     else:
-        clauseMDlines = readMDFile(progress, changed_clause.clause_nr +'.md')
+        clauseMDlines = readMDFile(progress, outDirectory + '/' + changed_clause.clause_nr +'.md')
 
     j = change.target_start - changed_clause.from_id # index gap
     for line in change:
diff --git a/generate_changemarks.sh b/generate_changemarks.sh
index d36c23a..6de8fbb 100644
--- a/generate_changemarks.sh
+++ b/generate_changemarks.sh
@@ -9,6 +9,7 @@ docker pull "$DOCKER_IMAGE"
 
 echo "------ Removing previous outputs --------"
 rm **/*.docx
+rm out/*.md
 
 echo "------ Parsing repo URL --------"
 
-- 
GitLab