From e14d5cc41ef1a1ca596aa053c072a7dce49d0c72 Mon Sep 17 00:00:00 2001
From: Markus Klein <klein.t3@reelworx.at>
Date: Fri, 14 Nov 2014 20:45:17 +0100
Subject: [PATCH] [TASK] Add XLF file checker for TRAVIS CI

The script checks for the presence of a t3:id in the XLF files.
Moreover the uniqueness is verified.

Resolves: #62965
Releases: master, 6.2
Change-Id: I8a2514b31c1484988ef7add937502424f64ed1e4
Reviewed-on: http://review.typo3.org/34184
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
---
 .travis.yml                                 |  5 +++
 typo3/sysext/core/Build/Scripts/xlfcheck.sh | 36 +++++++++++++++++++++
 2 files changed, 41 insertions(+)
 create mode 100644 typo3/sysext/core/Build/Scripts/xlfcheck.sh

diff --git a/.travis.yml b/.travis.yml
index 99906dac0b2e..58742b56c710 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -32,6 +32,7 @@ notifications:
 before_script:
   - if [ -e ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini ]; then echo "extension = memcache.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi
   - if [ -e ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini ]; then echo "extension = redis.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi
+  - chmod a+x typo3/sysext/core/Build/Scripts/*
   - sudo apt-get install parallel
   - composer self-update
   - composer install
@@ -57,3 +58,7 @@ script:
             exit 99;
         fi
     "
+  - >
+    echo;
+    echo "Running XLF checker";
+    ./typo3/sysext/core/Build/Scripts/xlfcheck.sh
diff --git a/typo3/sysext/core/Build/Scripts/xlfcheck.sh b/typo3/sysext/core/Build/Scripts/xlfcheck.sh
new file mode 100644
index 000000000000..fd3c5ce77ae1
--- /dev/null
+++ b/typo3/sysext/core/Build/Scripts/xlfcheck.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+#########################
+#
+# Find all t3:id numbers in XLF language files
+# and check their uniqueness.
+#
+# @author Markus Klein <klein.t3@reelworx.at>
+# @date 2014-11-14
+#
+##########################
+
+function join { local IFS="$1"; shift; echo "$*"; }
+
+find typo3 -name '*.xlf' > xlffiles.txt
+sed -ne 's/.*t3:id="\([0-9]\+\)".*/\1/pgM' `cat xlffiles.txt` | sort > xlfids.txt
+uniq xlfids.txt > uxlfids.txt
+XLFCNT=$(cat xlffiles.txt | wc -l)
+XLFIDCNT=$(cat xlfids.txt | wc -l)
+UXLFIDCNT=$(cat uxlfids.txt | wc -l)
+DIFFIDS=$(join , $(uniq -d xlfids.txt))
+MISSINGIDS=$(join , $(grep -LP 't3:id' `cat xlffiles.txt`))
+rm xlfids.txt uxlfids.txt xlffiles.txt
+if [ $XLFCNT -ne $XLFIDCNT ];
+then
+	echo "There is at least one XLF file missing a unique ID (t3:id)."
+	echo "Missing in: $MISSINGIDS"
+	exit 1
+fi
+if [ $XLFIDCNT -ne $UXLFIDCNT ];
+then
+	echo "There is an XLF id that does not seem to be UNIQUE."
+	echo "Search for t3:id $DIFFIDS"
+	exit 1
+fi
+exit 0
-- 
GitLab