summaryrefslogtreecommitdiff
path: root/tools/eos-json-extractor
diff options
context:
space:
mode:
authorFernando <fernando@endlessm.com>2013-12-06 13:50:13 -0800
committerFernando <fernando@endlessm.com>2013-12-10 13:37:36 -0800
commit9e51e0059b4413ce54ad04eb81c54185dae84bab (patch)
treeb48255ae224f20fa1706cc8a7f1603645d3e1430 /tools/eos-json-extractor
parentc26763c821ff2b2c74f6529081b15b73fa4a5f86 (diff)
Integrated JSON extraction utility
The utility used in eos-english and eos-programming-app was integrated and installed as part of the SDK CR comments addressed include: - Integrated new facilities available on GTK - Removed duplicate prototype declaration - Reformatted CLEANFILES var declaration - Used configure.ac to get @PACKAGE_VERSION@ - Added version() and usage() utilities [endlessm/eos-sdk#335]
Diffstat (limited to 'tools/eos-json-extractor')
-rw-r--r--tools/eos-json-extractor/eos-json-extractor.in64
1 files changed, 64 insertions, 0 deletions
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);
+}