UNPKG

1.57 kBJavaScriptView Raw
1#!/usr/bin/env node
2/* jshint node: true */
3'use strict';
4
5var main = require('./main');
6var options = require('./options');
7var commands = require('./commands/commands');
8
9if (process.argv.length < 3) {
10 console.error('Usage: apigeetool <command>');
11 commands.printCommandHelp();
12 process.exit(2);
13}
14
15var commandName = process.argv[2];
16var command = commands.getCommand(commandName);
17
18if (!command) {
19 console.error('Invalid command "%s"', commandName);
20 commands.printCommandHelp();
21 process.exit(3);
22}
23
24var commandModule = command.load();
25
26var opts;
27try {
28 opts = options.getopts(process.argv, 3, commandModule.descriptor);
29} catch (e) {
30 printUsage(e);
31 process.exit(4);
32}
33
34if (opts.help) {
35 console.log(options.getHelp(commandModule.descriptor));
36 process.exit(0);
37}
38
39if (process.stdin.isTTY) {
40 opts.interactive = true;
41}
42
43options.validate(opts, commandModule.descriptor, function(err) {
44 if (err) {
45 printUsage(err);
46 process.exit(5);
47 }
48 runCommand();
49});
50
51function printUsage(err) {
52 console.error('Invalid arguments: %s', err);
53 console.error('');
54 console.log('Usage:');
55 console.log(options.getHelp(commandModule.descriptor));
56}
57
58function runCommand() {
59 commandModule.run(opts, function(err, result) {
60 if (err) {
61 console.error('%s', err);
62 if (opts.verbose) {
63 console.error(err.stack);
64 }
65 process.exit(6);
66 }
67 if (!opts.json && commandModule.format) {
68 console.log(commandModule.format(result));
69 } else {
70 console.log(JSON.stringify(result));
71 }
72 process.exit(0);
73 });
74}