aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Griffis <tingping@tingping.se>2016-12-02 20:21:07 -0500
committerJussi Pakkanen <jpakkane@gmail.com>2016-12-03 21:00:20 +0200
commit7d68715297a611f50b256acf5358597ee037eb5d (patch)
treeab9520e199f91572d6e80461e265827afefb018f
parent8be0df144376673801c2c374b58f45f6d916abe8 (diff)
downloadmeson-7d68715297a611f50b256acf5358597ee037eb5d.zip
meson-7d68715297a611f50b256acf5358597ee037eb5d.tar.gz
meson-7d68715297a611f50b256acf5358597ee037eb5d.tar.bz2
i18n: Add merge_file function
This is a repeated task that we can simplify Closes #1120
-rw-r--r--mesonbuild/modules/i18n.py16
-rw-r--r--test cases/frameworks/6 gettext/data/meson.build8
-rw-r--r--test cases/frameworks/6 gettext/data/test.desktop.in6
-rw-r--r--test cases/frameworks/6 gettext/installed_files.txt1
-rw-r--r--test cases/frameworks/6 gettext/meson.build1
-rw-r--r--test cases/frameworks/6 gettext/po/LINGUAS2
-rw-r--r--test cases/frameworks/6 gettext/po/POTFILES1
7 files changed, 35 insertions, 0 deletions
diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py
index bb1b2f8..838749b 100644
--- a/mesonbuild/modules/i18n.py
+++ b/mesonbuild/modules/i18n.py
@@ -14,10 +14,26 @@
from os import path
from .. import coredata, mesonlib, build
+from ..mesonlib import MesonException
import sys
class I18nModule:
+ def merge_file(self, state, args, kwargs):
+ podir = kwargs.pop('po_dir', None)
+ if not podir:
+ raise MesonException('i18n: po_dir is a required kwarg')
+ podir = path.join(state.build_to_src, state.subdir, podir)
+
+ file_type = kwargs.pop('type', 'xml')
+ VALID_TYPES = ('xml', 'desktop')
+ if not file_type in VALID_TYPES:
+ raise MesonException('i18n: "{}" is not a valid type {}'.format(file_type, VALID_TYPES))
+
+ kwargs['command'] = ['msgfmt', '--' + file_type,
+ '--template', '@INPUT@', '-d', podir, '-o', '@OUTPUT@']
+ return build.CustomTarget(kwargs['output'] + '_merge', state.subdir, kwargs)
+
@staticmethod
def _read_linguas(state):
linguas = path.join(state.environment.get_source_dir(), state.subdir, 'LINGUAS')
diff --git a/test cases/frameworks/6 gettext/data/meson.build b/test cases/frameworks/6 gettext/data/meson.build
new file mode 100644
index 0000000..d927ba3
--- /dev/null
+++ b/test cases/frameworks/6 gettext/data/meson.build
@@ -0,0 +1,8 @@
+i18n.merge_file(
+ input: 'test.desktop.in',
+ output: 'test.desktop',
+ type: 'desktop',
+ po_dir: '../po',
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'applications')
+)
diff --git a/test cases/frameworks/6 gettext/data/test.desktop.in b/test cases/frameworks/6 gettext/data/test.desktop.in
new file mode 100644
index 0000000..33b9a9f
--- /dev/null
+++ b/test cases/frameworks/6 gettext/data/test.desktop.in
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=Test
+GenericName=Application
+Comment=Test Application
+Type=Application
+
diff --git a/test cases/frameworks/6 gettext/installed_files.txt b/test cases/frameworks/6 gettext/installed_files.txt
index c95b9fd..ffe543f 100644
--- a/test cases/frameworks/6 gettext/installed_files.txt
+++ b/test cases/frameworks/6 gettext/installed_files.txt
@@ -1,3 +1,4 @@
usr/bin/intlprog
usr/share/locale/de/LC_MESSAGES/intltest.mo
usr/share/locale/fi/LC_MESSAGES/intltest.mo
+usr/share/applications/test.desktop
diff --git a/test cases/frameworks/6 gettext/meson.build b/test cases/frameworks/6 gettext/meson.build
index 6bba7e0..6b517a4 100644
--- a/test cases/frameworks/6 gettext/meson.build
+++ b/test cases/frameworks/6 gettext/meson.build
@@ -4,3 +4,4 @@ i18n = import('i18n')
subdir('po')
subdir('src')
+subdir('data')
diff --git a/test cases/frameworks/6 gettext/po/LINGUAS b/test cases/frameworks/6 gettext/po/LINGUAS
new file mode 100644
index 0000000..d319e48
--- /dev/null
+++ b/test cases/frameworks/6 gettext/po/LINGUAS
@@ -0,0 +1,2 @@
+de
+fi
diff --git a/test cases/frameworks/6 gettext/po/POTFILES b/test cases/frameworks/6 gettext/po/POTFILES
index 5fd4b84..f49cecd 100644
--- a/test cases/frameworks/6 gettext/po/POTFILES
+++ b/test cases/frameworks/6 gettext/po/POTFILES
@@ -1 +1,2 @@
src/intlmain.c
+data/test.desktop