#! /bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src

# Test 'bulk' mode of Desktop Entry support.

cat <<\EOF > mf.desktop
[Desktop Entry]
Type=Application
Name =Foo

Comment[foo]=Already translated comment
Comment= \sThis is a \nmultiline comment; for testing
# This is a comment and must be preserved
Keywords=Keyword1;Keyword2;Key\;word3;
EOF

test -d po || mkdir po

cat <<\EOF > po/fr.po
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-03-17 07:36+0900\n"
"PO-Revision-Date: 2014-03-17 08:40+0900\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: xg.desktop:4
msgid "Foo"
msgstr ""
"French\n"
"foo"

#: xg.desktop:5
msgid ""
" This is a \n"
"multiline comment; for testing"
msgstr ""
"French \n"
"comment"

#: xg.desktop:7
msgid "Keyword1;Keyword2;Key\\;word3;"
msgstr "one;two;thr\\;ee;"
EOF

cat <<\EOF > po/de.po
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-03-17 07:36+0900\n"
"PO-Revision-Date: 2014-03-17 08:40+0900\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: xg.desktop:4
msgid "Foo"
msgstr ""
"German\n"
"foo"

#: xg.desktop:5
msgid ""
" This is a \n"
"multiline comment; for testing"
msgstr ""
"German \n"
"comment"

#: xg.desktop:7
msgid "Keyword1;Keyword2;Key\\;word3;"
msgstr "one;two;thr\\;ee;"
EOF

cat <<\EOF > mf.desktop.ok
[Desktop Entry]
Type=Application
Name[de]=German\nfoo
Name[fr]=French\nfoo
Name=Foo

Comment[foo]=Already translated comment
Comment[de]=German \ncomment
Comment[fr]=French \ncomment
Comment=\sThis is a \nmultiline comment; for testing
# This is a comment and must be preserved
Keywords[de]=one;two;thr\;ee;
Keywords[fr]=one;two;thr\;ee;
Keywords=Keyword1;Keyword2;Key\;word3;
EOF

cat <<\EOF > mf.desktop.desired.ok
[Desktop Entry]
Type=Application
Name[fr]=French\nfoo
Name=Foo

Comment[foo]=Already translated comment
Comment[fr]=French \ncomment
Comment=\sThis is a \nmultiline comment; for testing
# This is a comment and must be preserved
Keywords[fr]=one;two;thr\;ee;
Keywords=Keyword1;Keyword2;Key\;word3;
EOF

unset LINGUAS

# Sanity checks for contradicting options.

${MSGFMT} --desktop --template=mf.desktop -d po -o mf.desktop.out \
          >/dev/null 2>/dev/null \
  Exit 1

test -d po/LINGUAS || mkdir po/LINGUAS

${MSGFMT} --desktop --template=mf.desktop -d po -o mf.desktop.out \
          >/dev/null 2>/dev/null \
  Exit 1

rm -fr po/LINGUAS

cat <<\EOF > po/LINGUAS
de
fr
EOF

${MSGFMT} --desktop --template=mf.desktop -d po \
          >/dev/null 2>/dev/null \
  && Exit 1

${MSGFMT} --desktop --template=mf.desktop -d po -o mf.desktop.out -l fr \
          >/dev/null 2>/dev/null \
  && Exit 1

${MSGFMT} --desktop --template=mf.desktop -d po -o mf.desktop.out po/fr.po \
          >/dev/null 2>/dev/null \
  && Exit 1

# Proceed to the .desktop file generation.

${MSGFMT} --desktop --template=mf.desktop -d po -o mf.desktop.tmp || Exit 1
LC_ALL=C tr -d '\r' < mf.desktop.tmp > mf.desktop.out || Exit 1

: ${DIFF=diff}
${DIFF} mf.desktop.ok mf.desktop.out
test $? = 0 || Exit 1

# Restrict the desired languages with the LINGUAS envvar.

LINGUAS="fr ja" \
${MSGFMT} --desktop --template=mf.desktop -d po -o mf.desktop.desired.tmp || Exit 1
LC_ALL=C tr -d '\r' < mf.desktop.desired.tmp > mf.desktop.desired.out || Exit 1

: ${DIFF=diff}
${DIFF} mf.desktop.desired.ok mf.desktop.desired.out
test $? = 0 || Exit 1
