Loading generateChangemarks/changemarks.py +38 −5 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ def find_all_clauses(progress:Progress, mdLines:list[str]): clause.to_id = index - 1 clauses.append(clause) logging.debug("Number of clauses: {len(clauses)}") return clauses class MR: Loading Loading @@ -153,14 +154,15 @@ https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.st if patched_file.source_file.startswith("a/TS"): logging.debug(f"Looking at changes in {patched_file.source_file}") for change in patched_file: change_start_line, change_end_line, lines_added, lines_removed = changeDetails(change) # Check the previous changed_clause if (changed_clause.from_id <= change.target_start) and (changed_clause.to_id >= (change.target_start - 1 + change.target_length)): 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 i = 0 # Check all clauses for clause in clauses: if (clause.from_id <= change.target_start) and (clause.to_id >= (change.target_start - 1 + change.target_length)): 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) Loading @@ -172,6 +174,30 @@ https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.st return changed_clauses def changeDetails(change) -> (int, int, int, int): i = 0 lines_added = 0 lines_removed = 0 change_start_line = change.target_start change_end_line = change_start_line for line in change: 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 line.is_added: lines_added = lines_added + 1 elif line.is_removed: lines_removed = lines_removed + 1 i = i + 1 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): ''' Generate the MD for the clauses that have been modified by the merge request Loading @@ -198,7 +224,10 @@ https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.st for element in tableElements: if not element.strip() == '': modifiedElements.append("<span class=\"underline\">" + element.strip() + "</span>") modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n" #modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n" else: modifiedElements.append(element) modifiedRow = "|".join(modifiedElements) + "\n" clauseMDlines.insert(j,modifiedRow) clauseMDlines.pop(j + 1) else: Loading @@ -212,13 +241,17 @@ https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.st for element in tableElements: if not element.strip() == '': modifiedElements.append("~~" + element.strip() + "~~") modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n" #modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n" else: modifiedElements.append(element) modifiedRow = "|".join(modifiedElements) + "\n" clauseMDlines.insert(j, modifiedRow) else: clauseMDlines.insert(j, "~~" + line.value.strip() + "~~") j = j + 1 clauseMDlines.insert(j, "\n\n<br />") writeMDFile(progress, clauseMDlines, changed_clause.clause_nr.replace(" ","") + '.md', outDirectory) def process(document:str, outDirectory:str, mr:MR) -> None: Loading Loading
generateChangemarks/changemarks.py +38 −5 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ def find_all_clauses(progress:Progress, mdLines:list[str]): clause.to_id = index - 1 clauses.append(clause) logging.debug("Number of clauses: {len(clauses)}") return clauses class MR: Loading Loading @@ -153,14 +154,15 @@ https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.st if patched_file.source_file.startswith("a/TS"): logging.debug(f"Looking at changes in {patched_file.source_file}") for change in patched_file: change_start_line, change_end_line, lines_added, lines_removed = changeDetails(change) # Check the previous changed_clause if (changed_clause.from_id <= change.target_start) and (changed_clause.to_id >= (change.target_start - 1 + change.target_length)): 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 i = 0 # Check all clauses for clause in clauses: if (clause.from_id <= change.target_start) and (clause.to_id >= (change.target_start - 1 + change.target_length)): 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) Loading @@ -172,6 +174,30 @@ https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.st return changed_clauses def changeDetails(change) -> (int, int, int, int): i = 0 lines_added = 0 lines_removed = 0 change_start_line = change.target_start change_end_line = change_start_line for line in change: 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 line.is_added: lines_added = lines_added + 1 elif line.is_removed: lines_removed = lines_removed + 1 i = i + 1 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): ''' Generate the MD for the clauses that have been modified by the merge request Loading @@ -198,7 +224,10 @@ https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.st for element in tableElements: if not element.strip() == '': modifiedElements.append("<span class=\"underline\">" + element.strip() + "</span>") modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n" #modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n" else: modifiedElements.append(element) modifiedRow = "|".join(modifiedElements) + "\n" clauseMDlines.insert(j,modifiedRow) clauseMDlines.pop(j + 1) else: Loading @@ -212,13 +241,17 @@ https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.st for element in tableElements: if not element.strip() == '': modifiedElements.append("~~" + element.strip() + "~~") modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n" #modifiedRow = "|" + "|".join(modifiedElements) + "|" + "\n" else: modifiedElements.append(element) modifiedRow = "|".join(modifiedElements) + "\n" clauseMDlines.insert(j, modifiedRow) else: clauseMDlines.insert(j, "~~" + line.value.strip() + "~~") j = j + 1 clauseMDlines.insert(j, "\n\n<br />") writeMDFile(progress, clauseMDlines, changed_clause.clause_nr.replace(" ","") + '.md', outDirectory) def process(document:str, outDirectory:str, mr:MR) -> None: Loading