1 | #!/usr/bin/env node
|
2 |
|
3 | "use strict";
|
4 |
|
5 | var commander = require("commander")
|
6 | , Vantage = require("../lib/index")
|
7 | , chalk = require("chalk")
|
8 | ;
|
9 |
|
10 | var command
|
11 | , options = {}
|
12 | ;
|
13 |
|
14 | commander
|
15 | .arguments("[server]")
|
16 | .option("-s, --ssl", "Connect using SSL.")
|
17 | .option("-u, --user [user]", "Connect as a given user.")
|
18 | .option("-p, --pass [user]", "Password for given user.")
|
19 | .action(function(cmd, opts) {
|
20 | command = cmd || "";
|
21 | opts = opts || {};
|
22 | options.ssl = (opts.ssl) ? true : void 0;
|
23 | options.user = (opts.user) ? opts.user : void 0;
|
24 | options.pass = (opts.pass) ? opts.pass : void 0;
|
25 | });
|
26 |
|
27 | commander.parse(process.argv);
|
28 |
|
29 | function parseConnection(str) {
|
30 | var parts = String(str).split(":");
|
31 | var port = (parts.length === 2) ? parts[1] : void 0;
|
32 | var server = (parts.length === 2) ? parts[0] : void 0;
|
33 | if (parts.length === 1) {
|
34 | server = (isNumber(parts[0])) ? void 0 : parts[0];
|
35 | port = (String(parts[0]).length < 6 && isNumber(parts[0])) ? parts[0] : void 0;
|
36 | }
|
37 | server = (!server) ? "127.0.0.1" : server;
|
38 | port = (!port) ? "80" : port;
|
39 | return ({
|
40 | server: server,
|
41 | port: port
|
42 | });
|
43 | }
|
44 |
|
45 | function isNumber(str) {
|
46 | return !isNaN(parseInt(str));
|
47 | }
|
48 |
|
49 | function connect(vantage, server, port, opt) {
|
50 | return vantage.connect(server, port, opt).then(function(err) {
|
51 | if (err) {
|
52 | vantage._pause();
|
53 | process.exit(1);
|
54 | } else {
|
55 | if (!vantage.ui.midPrompt()) {
|
56 | vantage._prompt();
|
57 | }
|
58 | }
|
59 | }).catch(function(err){
|
60 | if (err.stack) {
|
61 | vantage.log(err.stack);
|
62 | }
|
63 | vantage._pause();
|
64 | process.exit(1);
|
65 | });
|
66 | }
|
67 |
|
68 | function showTour() {
|
69 | var fs = require("fs");
|
70 | var path = require("path");
|
71 | var file = "/../examples/tour/tour.js";
|
72 | if (fs.existsSync(path.join(__dirname, file))) {
|
73 | require(path.join(__dirname, file)); return;
|
74 | } else {
|
75 | console.log(chalk.yellow("\n Looks like the tour isn't included in your Vantage instance.\n Ensure ./examples/ is in your Vantage directory.\n"));
|
76 | process.exit(1);
|
77 | }
|
78 | }
|
79 |
|
80 | function execute(cmd, opt) {
|
81 | if (cmd === "tour") {
|
82 | return showTour();
|
83 | }
|
84 |
|
85 | var vantage = new Vantage();
|
86 | vantage.show();
|
87 |
|
88 | var connection = parseConnection(cmd);
|
89 |
|
90 |
|
91 | if (cmd !== undefined) {
|
92 | connect(vantage, connection.server, connection.port, opt);
|
93 | }
|
94 | }
|
95 |
|
96 | execute(command, options);
|