@@ -52,6 +52,13 @@ set_release_global_variables()
52
52
return 1
53
53
fi
54
54
55
+ # XMLLINT to use, defaults to "xmllint" if not set
56
+ XMLLINT=" ${XMLLINT:- xmllint} "
57
+ if [ ! -f " ` which " ${XMLLINT} " ` " ] ; then
58
+ stderr_echo " Cannot find xmllint! Set XMLLINT environment variable."
59
+ return 1
60
+ fi
61
+
55
62
# GPG to use, defaults to "gpg" if not set
56
63
GPG=" ${GPG:- gpg} "
57
64
if [ ! -f " ` which " ${GPG} " ` " ] ; then
@@ -140,6 +147,7 @@ Uses the following environment variables for releasing:
140
147
MVN Mvn executable to use. Default is "mvn".
141
148
GIT Git executable to use. Default is "git".
142
149
UNZIP Unzip executable to use. Default is "unzip".
150
+ XMLLINT Xmllint executable to use. Default is "xmllint".
143
151
GPG Gpg executable to use. Default is "gpg".
144
152
JAVA_BIN Java executable to use. Default is "java".
145
153
PYTHON Python executable to use. Default is "python3".
@@ -534,6 +542,12 @@ update_web_pages()
534
542
stderr_echo " Cannot unzip zserio runtime javadocs jar!"
535
543
return 1
536
544
fi
545
+ " ${UNZIP} " -q " ${WEB_PAGES_BUILD_DIR} " /runtime_libs/java/zserio_runtime_coverage.jar \
546
+ -d " ${WEB_PAGES_BUILD_DIR} " /runtime_libs/java/zserio_doc/coverage -x META-INF/*
547
+ if [ $? -ne 0 ] ; then
548
+ stderr_echo " Cannot unzip zserio runtime javadocs jar!"
549
+ return 1
550
+ fi
537
551
echo " Done"
538
552
539
553
echo -ne " Copying Zserio runtime libraries..."
@@ -554,6 +568,42 @@ update_web_pages()
554
568
fi
555
569
echo " Done"
556
570
571
+ echo -ne " Creating Zserio runtime library GitHub badges..."
572
+ local CLANG_COVERAGE_DIR=" ${ZSERIO_PROJECT_ROOT} " /doc/runtime/cpp/coverage/clang
573
+ local CLANG_LINES_COVERAGE=` cat " ${CLANG_COVERAGE_DIR} " /coverage_report.txt | grep TOTAL | \
574
+ tr -s ' ' | cut -d' ' -f 10`
575
+ create_github_badge_json " ${CLANG_COVERAGE_DIR} " /coverage_github_badge.json \
576
+ " C++ clang runtime ${ZSERIO_VERSION} coverage" " ${CLANG_LINES_COVERAGE} "
577
+
578
+ local GCC_COVERAGE_DIR=" ${ZSERIO_PROJECT_ROOT} " /doc/runtime/cpp/coverage/gcc
579
+ local GCC_LINES_COVERAGE=` cat " ${GCC_COVERAGE_DIR} " /coverage_report.txt | grep lines: | \
580
+ tr -s ' ' | cut -d' ' -f 2`
581
+ create_github_badge_json " ${GCC_COVERAGE_DIR} " /coverage_github_badge.json \
582
+ " C++ gcc runtime ${ZSERIO_VERSION} coverage" " ${GCC_LINES_COVERAGE} "
583
+
584
+ local JAVA_COVERAGE_DIR=" ${ZSERIO_PROJECT_ROOT} " /doc/runtime/java/coverage
585
+ local JAVA_LINES_MISSED=` ${XMLLINT} --format " ${JAVA_COVERAGE_DIR} " /jacoco_report.xml | \
586
+ grep ' <counter type="INSTRUCTION"' | tail -1 | tr -s ' ' | cut -d' ' -f4 | cut -d= -f2 | tr -d \" `
587
+ local JAVA_LINES_COVERED=` ${XMLLINT} --format " ${JAVA_COVERAGE_DIR} " /jacoco_report.xml | \
588
+ grep ' <counter type="INSTRUCTION"' | tail -1 | tr -s ' ' | cut -d' ' -f5 | cut -d= -f2 | \
589
+ tr -d \"\/\> `
590
+ local JAVA_LINES_VALID=$(( ${JAVA_LINES_COVERED} - ${JAVA_LINES_MISSED} ))
591
+ local JAVA_LINES_COVERAGE=$(( 10000 * ${JAVA_LINES_VALID} / ${JAVA_LINES_COVERED} ))
592
+ create_github_badge_json " ${JAVA_COVERAGE_DIR} " /coverage_github_badge.json \
593
+ " Java runtime ${ZSERIO_VERSION} coverage" \
594
+ " ${JAVA_LINES_COVERAGE: 0:- 2} .${JAVA_LINES_COVERAGE: -2} %"
595
+
596
+ local PYTHON_COVERAGE_DIR=" ${ZSERIO_PROJECT_ROOT} " /doc/runtime/python/coverage
597
+ local PYTHON_LINES_VALID=` cat " ${PYTHON_COVERAGE_DIR} " /coverage_report.xml | grep lines-covered | \
598
+ cut -d' ' -f 4 | cut -d= -f2 | tr -d \" `
599
+ local PYTHON_LINES_COVERED=` cat " ${PYTHON_COVERAGE_DIR} " /coverage_report.xml | grep lines-covered | \
600
+ cut -d' ' -f 5 | cut -d= -f2 | tr -d \" `
601
+ local PYTHON_LINES_COVERAGE=$(( 10000 * ${PYTHON_LINES_VALID} / ${PYTHON_LINES_COVERED} ))
602
+ create_github_badge_json " ${PYTHON_COVERAGE_DIR} " /coverage_github_badge.json \
603
+ " Python runtime ${ZSERIO_VERSION} coverage" \
604
+ " ${PYTHON_LINES_COVERAGE: 0:- 2} .${PYTHON_LINES_COVERAGE: -2} %"
605
+ echo " Done"
606
+
557
607
# This is necessary because Jekyll ignores Python runtime doc directories that start with underscores.
558
608
echo -ne " Creating Jekyll configuration file..."
559
609
echo " theme: jekyll-theme-slate" > " ${ZSERIO_PROJECT_ROOT} " /_config.yml
@@ -590,6 +640,24 @@ update_web_pages()
590
640
return 0
591
641
}
592
642
643
+ # Create JSON configuration file for GitHub badge
644
+ create_github_badge_json ()
645
+ {
646
+ exit_if_argc_ne $# 3
647
+ local BADGE_JSON_FILE=" $1 " ; shift
648
+ local BADGE_LABEL=" $1 " ; shift
649
+ local BADGE_MESSAGE=" $1 " ; shift
650
+
651
+ cat > " ${BADGE_JSON_FILE} " << EOF
652
+ {
653
+ "schemaVersion": 1,
654
+ "label": "${BADGE_LABEL} ",
655
+ "message": "${BADGE_MESSAGE} ",
656
+ "color": "green"
657
+ }
658
+ EOF
659
+ }
660
+
593
661
# Print help message.
594
662
print_help ()
595
663
{
0 commit comments