diff options
Diffstat (limited to 'tools/eos-application-manifest/eos-application-manifest.in')
-rw-r--r-- | tools/eos-application-manifest/eos-application-manifest.in | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tools/eos-application-manifest/eos-application-manifest.in b/tools/eos-application-manifest/eos-application-manifest.in new file mode 100644 index 0000000..7edbcb1 --- /dev/null +++ b/tools/eos-application-manifest/eos-application-manifest.in @@ -0,0 +1,47 @@ +#!/usr/bin/gjs +// Copyright 2013 Endless Mobile, Inc. + +const Format = imports.format; +const System = imports.system; + +String.prototype.format = Format.format; +// monkeypatch System.programInvocationName which is not in this version of GJS +System.programInvocationName = 'eos-application-manifest'; + +// Other constants, available from subcommands' code +const commandSearchPath = "@datadir@/eos-application-manifest/commands"; +const programVersion = "@PACKAGE_VERSION@"; + +// Import commands from commands/ directory (local first) +imports.searchPath.unshift(commandSearchPath); +imports.searchPath.unshift('./commands'); + +// Must invoke a subcommand +if (ARGV.length === 0) { + // automatically invoke "help" command with no arguments + const Help = imports.help; + Help.execute([]); + // System.exit(1); broken, bugzilla.gnome.org #703826 + throw new Error(); +} + +let command_name = ARGV.shift(); +let command; +try { + command = imports[command_name]; +} catch (e) { + if (/No JS module '.*' found in search path/.test(e.message)) { + let program_name = System.programInvocationName; + printerr("%s: '%s' is not a valid command name. See %s help.".format( + program_name, command_name, program_name)); + // System.exit(1); broken + throw new Error(); + } +} +try { + command.execute(ARGV); +} catch (e) { + printerr('%s: %s'.format(System.programInvocationName, e.message)); + // System.exit(1); broken + throw e; +} |