summaryrefslogtreecommitdiff
path: root/bin/ui-checkdomain.sh
blob: 30e0c5b0f594574e6bcd27f2d5f66db4976be8d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/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