Skip to content
Snippets Groups Projects
Commit 09ad910c authored by Miguel Angel Reina Ortega's avatar Miguel Angel Reina Ortega
Browse files

Adding generation of tracked changes docx to the process

parent 0a04e26e
No related branches found
No related tags found
No related merge requests found
...@@ -19,16 +19,17 @@ stages: ...@@ -19,16 +19,17 @@ stages:
Build pythonForPandocFilter docker image: Build pythonForPandocFilter docker image:
stage: build stage: build
before_script: cd pandocFilter before_script: cd generateChangemarks
script: docker build --tag pandocfilter:latest -f dockerfile . script: docker build --tag generatechangemarks:latest -f dockerfile .
rules: rules:
- if: $CI_COMMIT_BRANCH - if: $CI_COMMIT_BRANCH
changes: changes:
- pandocFilter/dockerfile - generateChangemarks/dockerfile
- pandocFilter/setup.py - generateChangemarks/setup.py
- pandocFilter/requirements.txt - generateChangemarks/requirements.txt
- pandocFilter/pandocFilter.py - generateChangemarks/pandocFilter.py
- pandocFilter/changemarks.py - generateChangemarks/changemarks.py
- generateChangemarks/addTrackedChanges.py
Word CR text: Word CR text:
stage: generation stage: generation
......
...@@ -9,9 +9,11 @@ ...@@ -9,9 +9,11 @@
# #
from typing import Optional from typing import Optional
import argparse, tempfile, zipfile import argparse, tempfile, zipfile, sys
import lxml.etree as ET import lxml.etree as ET
from changemarks import MR
wns = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}' wns = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'
...@@ -132,8 +134,7 @@ def convertChanges(fn:str, ...@@ -132,8 +134,7 @@ def convertChanges(fn:str,
for fn in originalFileList: for fn in originalFileList:
zip.write(f'{tmpDir}/{fn}', fn, compress_type = zipfile.ZIP_DEFLATED , compresslevel = 9) zip.write(f'{tmpDir}/{fn}', fn, compress_type = zipfile.ZIP_DEFLATED , compresslevel = 9)
def main(args=None):
if __name__ == '__main__':
# Parse command line arguments # Parse command line arguments
parser = argparse.ArgumentParser(formatter_class = argparse.ArgumentDefaultsHelpFormatter) parser = argparse.ArgumentParser(formatter_class = argparse.ArgumentDefaultsHelpFormatter)
...@@ -142,11 +143,19 @@ if __name__ == '__main__': ...@@ -142,11 +143,19 @@ if __name__ == '__main__':
parser.add_argument('--date', '-d', action = 'store', dest = 'date', default = None, metavar = '<date>', help = 'specify the date of the changes (e.g. "2023-07-21T14:09:02")') parser.add_argument('--date', '-d', action = 'store', dest = 'date', default = None, metavar = '<date>', help = 'specify the date of the changes (e.g. "2023-07-21T14:09:02")')
parser.add_argument('--colourOnly', '-c', action = 'store_true', dest = 'colourOnly', default = False, help = 'only set the colour of the changes, but do not convert them to tracked changes') parser.add_argument('--colourOnly', '-c', action = 'store_true', dest = 'colourOnly', default = False, help = 'only set the colour of the changes, but do not convert them to tracked changes')
parser.add_argument('document', help = 'document to parse') parser.add_argument('document', help = 'document to parse')
parser.add_argument('rootURL', help="Forge root URL")
parser.add_argument('projectID', help="Forge project ID")
parser.add_argument('mergeID', help="Merge IID")
args = parser.parse_args() args = parser.parse_args()
mr = MR(args.projectID, args.mergeID, args.rootURL)
# Convert the changes # Convert the changes
convertChanges(args.document, convertChanges(args.document,
args.outfile, args.outfile,
author = args.author, author = mr.author,
date = args.date, date = mr.date,
colourOnly = args.colourOnly) colourOnly = args.colourOnly)
if __name__ == '__main__':
sys.exit(main())
...@@ -124,6 +124,7 @@ class MR: ...@@ -124,6 +124,7 @@ class MR:
self.web_url = self.raw_project_details['web_url'] self.web_url = self.raw_project_details['web_url']
self.raw_mr_details = fetch_json(self.api_url(f'/merge_requests/{self.mr_id}')) self.raw_mr_details = fetch_json(self.api_url(f'/merge_requests/{self.mr_id}'))
self.author = self.raw_mr_details['author']['name'] self.author = self.raw_mr_details['author']['name']
self.date = self.raw_mr_details['updated_at']
self.target_branch = self.raw_mr_details['target_branch'] self.target_branch = self.raw_mr_details['target_branch']
self.source_branch = self.raw_mr_details['source_branch'] self.source_branch = self.raw_mr_details['source_branch']
self.title = self.raw_mr_details['title'] self.title = self.raw_mr_details['title']
......
FROM python:3.9-slim-bullseye FROM python:3.9-slim-bullseye
ADD . /pandocFilter/ ADD . /generateChangemarks/
RUN apt-get update -y && \ RUN apt-get update -y && \
rm -rf /var/lib/apt/lists/* &&\ rm -rf /var/lib/apt/lists/* &&\
pip install -e pandocFilter/ &&\ pip install -e generateChangemarks/ &&\
pip install -r pandocFilter/requirements.txt pip install -r generateChangemarks/requirements.txt
File moved
...@@ -14,3 +14,5 @@ pygments==2.15.1 ...@@ -14,3 +14,5 @@ pygments==2.15.1
# via rich # via rich
rich==13.4.2 rich==13.4.2
# via oneM2M-markdown-to-pandoc-filter (setup.py) # via oneM2M-markdown-to-pandoc-filter (setup.py)
requests==2.31.0
unidiff==0.7.5
\ No newline at end of file
File moved
#!/bin/bash #!/bin/bash
FORGELIB_DOCKER_IMAGE=forge.3gpp.org:5050/tools/3gpp-scripts/forgelib:v2.5.0 FORGELIB_DOCKER_IMAGE=forge.3gpp.org:5050/tools/3gpp-scripts/forgelib:v2.5.0
PANDOC_FILTER_DOCKER_IMAGE=pandocfilter:latest GENERATE_CHANGEMARKS_DOCKER_IMAGE=generatechangemarks:latest
DOCKER_IMAGE=pandoc/core:3.1.1.0 DOCKER_IMAGE=pandoc/core:3.1.1.0
echo "\n------ Checking for docker image --------" echo "\n------ Checking for docker image --------"
...@@ -21,13 +21,13 @@ echo "MERGE IID:" $3 ...@@ -21,13 +21,13 @@ echo "MERGE IID:" $3
echo "\n------ Generating change marks MD --------" echo "\n------ Generating change marks MD --------"
#docker container run --rm -v $(pwd):/tmp/ "$DOCKER_IMAGE" forgelib-changedocs -vv --combine --diffs --preprocessor onem2m --outPath=/tmp/docs --startdelimiter "/tmp/$4" --enddelimiter "/tmp/$5" --coversheet "/tmp/$6" "$HOST_URL" "$2" "$PROJECT_NAME" "$3" #docker container run --rm -v $(pwd):/tmp/ "$DOCKER_IMAGE" forgelib-changedocs -vv --combine --diffs --preprocessor onem2m --outPath=/tmp/docs --startdelimiter "/tmp/$4" --enddelimiter "/tmp/$5" --coversheet "/tmp/$6" "$HOST_URL" "$2" "$PROJECT_NAME" "$3"
docker container run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$PANDOC_FILTER_DOCKER_IMAGE" changemarks -o "/tmp/out" "$HOST_URL" "$2" "$3" docker container run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$GENERATE_CHANGEMARKS_DOCKER_IMAGE" changemarks -o "/tmp/out" "$HOST_URL" "$2" "$3"
echo "\n------ Generating changemarks docx --------" echo "\n------ Generating changemarks docx --------"
for i in out/*.md ; do for i in out/*.md ; do
DOCUMENT_NAME=$(echo $i | cut -d'/' -f 2) DOCUMENT_NAME=$(echo $i | cut -d'/' -f 2)
echo "\n------ Preparaing spec --------" echo "\n------ Preparaing spec --------"
docker run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$PANDOC_FILTER_DOCKER_IMAGE" pandocFilter -o "/tmp/out" "/tmp/$i" docker run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$GENERATE_CHANGEMARKS_DOCKER_IMAGE" pandocFilter -o "/tmp/out" "/tmp/$i"
echo "\n------ Publishing spec --------" echo "\n------ Publishing spec --------"
docker run --rm -v $(pwd):/data -u $(id -u):$(id -g) "$DOCKER_IMAGE" "/data/$i" -f markdown -t docx --reference-doc "Spec-template.docx" -o "/data/out/${DOCUMENT_NAME}.docx" docker run --rm -v $(pwd):/data -u $(id -u):$(id -g) "$DOCKER_IMAGE" "/data/$i" -f markdown -t docx --reference-doc "Spec-template.docx" -o "/data/out/${DOCUMENT_NAME}.docx"
done done
...@@ -35,4 +35,10 @@ done ...@@ -35,4 +35,10 @@ done
echo "\n------ Combining docx --------" echo "\n------ Combining docx --------"
docker container run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$FORGELIB_DOCKER_IMAGE" forgelib-changedocs -vv -sf "/tmp/out/" --preprocessor onem2m --outPath=/tmp/docs --startdelimiter "/tmp/$4" --enddelimiter "/tmp/$5" --coversheet "/tmp/$6" "$HOST_URL" "$2" "$3" docker container run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$FORGELIB_DOCKER_IMAGE" forgelib-changedocs -vv -sf "/tmp/out/" --preprocessor onem2m --outPath=/tmp/docs --startdelimiter "/tmp/$4" --enddelimiter "/tmp/$5" --coversheet "/tmp/$6" "$HOST_URL" "$2" "$3"
echo "\n------ Converting to tracked changes docx --------"
for i in docs/*.docx ; do
DOCUMENT_NAME=$(echo $i | cut -d'/' -f 2)
docker container run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$GENERATE_CHANGEMARKS_DOCKER_IMAGE" addTrackedChanges -o "/tmp/docs/$DOCUMENT_NAME" "/tmp/$i" "$HOST_URL" "$2" "$3"
done
exit 0 exit 0
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment