diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/Makefile.am.inc | 14 | ||||
-rw-r--r-- | tools/eos-json-extractor/eos-json-extractor.in | 64 |
2 files changed, 75 insertions, 3 deletions
diff --git a/tools/Makefile.am.inc b/tools/Makefile.am.inc index ab668df..47744b2 100644 --- a/tools/Makefile.am.inc +++ b/tools/Makefile.am.inc @@ -2,7 +2,8 @@ bin_SCRIPTS = \ tools/eos-run-test \ - tools/eos-application-manifest/eos-application-manifest + tools/eos-application-manifest/eos-application-manifest \ + tools/eos-json-extractor/eos-json-extractor \ $(NULL) # Use the following script to replace $datadir inside the script, as suggested @@ -13,6 +14,7 @@ tools_edit = sed \ -e 's|@libexecdir[@]|$(libexecdir)|g' \ -e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' \ $(NULL) + tools/eos-application-manifest/eos-application-manifest: tools/eos-application-manifest/eos-application-manifest.in Makefile $(AM_V_GEN)$(MKDIR_P) tools/eos-application-manifest && \ rm -f $@ $@.tmp && \ @@ -21,8 +23,14 @@ tools/eos-application-manifest/eos-application-manifest: tools/eos-application-m chmod a-w $@.tmp && \ mv $@.tmp $@ -CLEANFILES += tools/eos-application-manifest/eos-application-manifest -EXTRA_DIST += tools/eos-application-manifest/eos-application-manifest.in +CLEANFILES += \ + tools/eos-application-manifest/eos-application-manifest \ + tools/eos-json-extractor/eos-json-extractor \ + $(NULL) +EXTRA_DIST += \ + tools/eos-application-manifest/eos-application-manifest.in \ + tools/eos-json-extractor/eos-json-extractor.in \ + $(NULL) commandsdir = $(libexecdir)/eos-application-manifest/commands dist_commands_DATA = \ diff --git a/tools/eos-json-extractor/eos-json-extractor.in b/tools/eos-json-extractor/eos-json-extractor.in new file mode 100644 index 0000000..28c5e8e --- /dev/null +++ b/tools/eos-json-extractor/eos-json-extractor.in @@ -0,0 +1,64 @@ +#!/usr/bin/gjs +// Copyright 2013 Endless Mobile, Inc. + +const Format = imports.format; +const System = imports.system; + +const Gio = imports.gi.Gio; +const Json = imports.gi.Json; + +String.prototype.format = Format.format; + +// Other constants, available from subcommands' code +const programVersion = "@PACKAGE_VERSION@"; + +/** + * usage: + * + * Print command-line help message. + */ +function usage() { + print('Extracts translatable strings fron JSON configuration file.\n'); + print('Usage: %s [Options | <INPUT-FILE> <TOP-SRCDIR>]\n'.format( + System.programInvocationName)); + print('Options:'); + print(' --help Print this help message'); + print(' --version Print version and exit'); + System.exit(0); +} + +/** + * version: + * + * Print command-line version output. + */ +function version() { + print('%s %s - Discover unit tests in a source tree'.format( + System.programInvocationName, programVersion)); + System.exit(0); +} + +if(ARGV.indexOf('--version') != -1) + version(); +if((ARGV.indexOf('--help') != -1) || (ARGV.length != 2)) { + usage(); +} + +try { + let parser = new Json.Parser(); + let input_file = Gio.File.new_for_path(ARGV[0]); + let top_srcdir = Gio.File.new_for_path(ARGV[1]); + let full_path = top_srcdir.get_relative_path(input_file); + + parser.connect('object-member', function(parser, object, member_name) { + if(!member_name.endsWith('_')) + return; + print('#line %d "%s"'.format(parser.get_current_line(), full_path)); + print('_("%s");'.format(object.get_string_member(member_name))); + }); + parser.load_from_file(input_file.get_path()); + +} catch (e) { + printerr('%s: %s'.format(System.programInvocationName, e.message)); + System.exit(1); +} |