1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var fs = require("fs");
|
4 | var path = require("path");
|
5 | var docopt_1 = require("docopt");
|
6 | var utils = require("./lib/utils");
|
7 | var package_1 = require("./lib/package");
|
8 | var logger_1 = require("./lib/logger");
|
9 | var token_1 = require("./lib/token");
|
10 | var dir = fs.readdirSync(path.join(__dirname, "./commands"))
|
11 | .map(function (d) { return d.split(".")[0]; })
|
12 | .filter(function (d) { return d !== "command"; });
|
13 | var commands = {};
|
14 | var doc = "\nUsage:\n";
|
15 | for (var ii in dir) {
|
16 | var d = dir[ii];
|
17 | commands[d] = require(path.join(__dirname, "./commands/" + d));
|
18 | doc = doc + " " + process.title + " " + commands[d].doc + "\n";
|
19 | logger_1.instance.info("found " + d + ": " + commands[d].doc);
|
20 | }
|
21 | doc = doc + "\nOptions:\n -h --help Show this screen.\n -v --version Show version.\n";
|
22 | var packageJson = utils.loadJson(path.join(__dirname, "../package.json"));
|
23 | var options = docopt_1.docopt(doc, { version: packageJson.version });
|
24 | var messagePackageValidationError = function (pkgValidation) {
|
25 | if (pkgValidation.packageMalformed) {
|
26 | logger_1.instance.error("Cloudstitch package defenition appears to be missing critical information or is malformed check please check your cloudstitch.json");
|
27 | }
|
28 | else if (pkgValidation.notFound) {
|
29 | logger_1.instance.error("Cloudstitch package defenition could not be found the the current or parent directories please create a cloudstitch.json file");
|
30 | }
|
31 | process.exit(1);
|
32 | };
|
33 | var messageLoginError = function () {
|
34 | logger_1.instance.error("You don't appear to be logged in, please run `cloudstitch login`.");
|
35 | process.exit(1);
|
36 | };
|
37 | Object.keys(commands).forEach(function (key) {
|
38 | if (typeof options[key] === "boolean" && options[key]) {
|
39 | var command = commands[key];
|
40 | if (command.requiresPkg) {
|
41 | var thisPkgValidation = package_1.instance.isInvalid();
|
42 | if (options["<folder>"]) {
|
43 | var folderPackage = new package_1.Package(options["<folder>"]), letValidation = folderPackage.isInvalid();
|
44 | if (letValidation) {
|
45 | messagePackageValidationError(letValidation);
|
46 | }
|
47 | }
|
48 | else if (thisPkgValidation) {
|
49 | messagePackageValidationError(thisPkgValidation);
|
50 | }
|
51 | }
|
52 | var runCommand = function () {
|
53 | commands[key].run(options);
|
54 | };
|
55 | if (command.requiresLogin) {
|
56 | token_1.default().then(runCommand, messageLoginError);
|
57 | }
|
58 | else {
|
59 | runCommand();
|
60 | }
|
61 | }
|
62 | });
|