post_gerrit_comment.sh: Add a helper to limit size of Gerrit comment

Trim the comment to be posted to be under 16K, which appears to be
Gerrit's limit (violating it causes error and build failure).

Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
Change-Id: I645b84b5e6d931004f526a3463044af77151e7b5
diff --git a/eclair/post_gerrit_comment.sh b/eclair/post_gerrit_comment.sh
index 333b608..7388416 100755
--- a/eclair/post_gerrit_comment.sh
+++ b/eclair/post_gerrit_comment.sh
@@ -9,6 +9,9 @@
 # Set to 0 to temporarily disable posting comments to Gerrit.
 should_post_comment=1
 
+# Directory where this script resides.
+SCRIPT_DIR="$(cd "$(dirname "$0")" ; echo "${PWD}")"
+
 # Don't post comments if run on the staging server.
 if echo "$JENKINS_URL" | grep -q "ci\.staging"; then
     should_post_comment=0
@@ -29,7 +32,7 @@
     mkdir -p ~/.ssh/
     ssh-keyscan -H -p 29418 $GERRIT_HOST >> ~/.ssh/known_hosts
 
-    quoted="$(python3 -c 'import sys, shlex; print(shlex.quote(open(sys.argv[1]).read()))' misra_delta.txt)"
+    quoted="$(python3 $SCRIPT_DIR/prepare_gerrit_comment.py misra_delta.txt)"
 
     ssh -o "PubkeyAcceptedKeyTypes +ssh-rsa" -p 29418 -i "$CI_BOT_KEY" "$CI_BOT_USERNAME@$GERRIT_HOST" gerrit \
         review  "$GERRIT_CHANGE_NUMBER,$GERRIT_PATCHSET_NUMBER" \
diff --git a/eclair/prepare_gerrit_comment.py b/eclair/prepare_gerrit_comment.py
new file mode 100755
index 0000000..1ef0052
--- /dev/null
+++ b/eclair/prepare_gerrit_comment.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+#
+# Copyright (c) 2022 Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
+# Script to prepare a textual body of a comment to pass on the command line
+# to Gerrit: limit it to acceptable size and quote properly.
+
+import sys
+import shlex
+
+
+SIZE_LIMIT = 16000
+
+
+body = ""
+
+with open(sys.argv[1], "r") as f:
+    for l in f:
+        body += l
+        if len(body) >= SIZE_LIMIT:
+            body += """\
+[...]
+
+WARNING: The report was trimmed due to size limit of a Gerrit comment.
+Follow the link at the beginning to see the full report.
+"""
+            break
+
+sys.stdout.write(shlex.quote(body))