Check UI interface domains in the git pre-commit hook
This will prevent bugs like tdf#141902 to happen Change-Id: If81164c704ec17d3fee044aaa0ec9c16d474009e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114705 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
parent
707db60df7
commit
f3665d2a42
2 changed files with 14 additions and 52 deletions
|
@ -18,6 +18,11 @@ sub check_whitespaces($)
|
|||
my $src_limited = "c|cpp|cxx|h|hrc|hxx|idl|inl|java|swift|map|MK|pmk|pl|pm|sdi|sh|src|tab|ui|xcu|xml|xsl|py";
|
||||
my $src_full = "c|cpp|cxx|h|hrc|hxx|idl|inl|java|swift|map|mk|MK|pmk|pl|pm|sdi|sh|src|tab|ui|xcu|xml|xsl|py";
|
||||
|
||||
my %modules = (basctl=>'basctl', chart2=>'chart', cui=>'cui', dbaccess=>'dba', desktop=>'dkt', editeng=>'editeng',
|
||||
extensions=>'pcr', filter=>'flt', formula=>'"for"', fpicker=>'fps', framework=>'fwk', reportdesign=>'rpt',
|
||||
sc=>'sc', sd=>'sd', sfx2=>'sfx', starmath=>'sm', svtools=>'svt', svx=>'svx', sw=>'sw', uui=>'uui',
|
||||
vcl=>'vcl', writerperfect=>'wpt', xmlsecurity=>'xsc');
|
||||
|
||||
my $found_bad = 0;
|
||||
my $filename;
|
||||
my $reported_filename = "";
|
||||
|
@ -137,6 +142,15 @@ sub check_whitespaces($)
|
|||
{
|
||||
bad_line(".ui file without translation domain", $_, "ui");
|
||||
}
|
||||
if (/<interface domain=/)
|
||||
{
|
||||
foreach my $key (keys %modules) {
|
||||
if ((rindex($filename, $key, 0) == 0) and not (/$modules{$key}/))
|
||||
{
|
||||
bad_line("interface domain should be '$modules{$key}'", $_, "ui");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( $found_bad)
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
#!/bin/bash
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
# This script finds .ui files with incorrect translation domain set
|
||||
# and prints the domain, the file name and the expected domain
|
||||
# See also the discussion at https://gerrit.libreoffice.org/#/c/72973/
|
||||
|
||||
declare -A modules
|
||||
|
||||
# List of modules with .ui files and their expected translation domain
|
||||
modules+=( \
|
||||
[basctl]=basctl \
|
||||
[chart2]=chart \
|
||||
[cui]=cui \
|
||||
[dbaccess]=dba \
|
||||
[desktop]=dkt \
|
||||
[editeng]=editeng \
|
||||
[extensions]=pcr \
|
||||
[filter]=flt \
|
||||
[formula]="for" \
|
||||
[fpicker]=fps \
|
||||
[framework]=fwk \
|
||||
[reportdesign]=rpt \
|
||||
[sc]=sc \
|
||||
[sd]=sd \
|
||||
[sfx2]=sfx \
|
||||
[starmath]=sm \
|
||||
[svtools]=svt \
|
||||
[svx]=svx \
|
||||
[sw]=sw \
|
||||
[uui]=uui \
|
||||
[vcl]=vcl \
|
||||
[writerperfect]=wpt \
|
||||
[xmlsecurity]=xsc \
|
||||
)
|
||||
|
||||
# Iterate the keys, i.e. modules with a uiconfig subdir
|
||||
for key in ${!modules[@]}; do
|
||||
# Enumerate all .ui files in each module
|
||||
for uifile in $(git ls-files ${key}/uiconfig/*\.ui); do
|
||||
# Check that they contain the expected domain in double quotation marks, print the line if they don't
|
||||
grep "\<interface domain=" $uifile | grep -v "\"${modules[${key}]}\"";
|
||||
if [ "$?" -eq 0 ] ;
|
||||
# Report the file name and the expected domain
|
||||
then echo "^Problematic interface domain in file: $uifile ; should be: "${modules[${key}]}"";
|
||||
fi
|
||||
done
|
||||
done
|
Loading…
Reference in a new issue