UNPKG

2.35 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3"use strict";
4
5var commander = require("commander")
6 , Vantage = require("../lib/index")
7 , chalk = require("chalk")
8 ;
9
10var command
11 , options = {}
12 ;
13
14commander
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
27commander.parse(process.argv);
28
29function 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
45function isNumber(str) {
46 return !isNaN(parseInt(str));
47}
48
49function 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
68function 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
80function 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 // If there is somewhere to go, connect.
91 if (cmd !== undefined) {
92 connect(vantage, connection.server, connection.port, opt);
93 }
94}
95
96execute(command, options);