CLI seems to be working

This commit is contained in:
Kasra Bigdeli
2019-01-06 15:45:57 -08:00
parent ea3305f72a
commit d4c1fa5dee
21 changed files with 487 additions and 54 deletions
+1 -1
View File
@@ -69,7 +69,7 @@ class ApiManager {
uploadAppData(appName, file) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/appData/' + appName + '?detached=1', { sourceFile: file })); // TODO user/apps/appData
.then(http.fetch(http.POST_DATA, '/user/appData/' + appName + '?detached=1', { sourceFile: file })); // TODO user/apps/appData
}
uploadCaptainDefinitionContent(appName, captainDefinition, gitHash, detached) {
const http = this.http;
File diff suppressed because one or more lines are too long
+14 -6
View File
@@ -13,6 +13,7 @@ class HttpClient {
this.onAuthFailure = onAuthFailure;
this.GET = 'GET';
this.POST = 'POST';
this.POST_DATA = 'POST_DATA';
this.isDestroyed = false;
//
}
@@ -80,8 +81,8 @@ class HttpClient {
});
})
.catch(function (error) {
Logger_1.default.log('');
Logger_1.default.error(error.message || error);
// Logger.log('');
// Logger.error(error.message || error);
return new Promise(function (resolve, reject) {
if (!self.isDestroyed)
return reject(error);
@@ -93,8 +94,8 @@ class HttpClient {
fetchInternal(method, endpoint, variables) {
if (method === this.GET)
return this.getReq(endpoint, variables);
if (method === this.POST)
return this.postReq(endpoint, variables);
if (method === this.POST || method === this.POST_DATA)
return this.postReq(endpoint, variables, method);
throw new Error('Unknown method: ' + method);
}
getReq(endpoint, variables) {
@@ -106,11 +107,18 @@ class HttpClient {
return data;
});
}
postReq(endpoint, variables) {
postReq(endpoint, variables, method) {
const self = this;
if (method === this.POST_DATA)
return Request.post(this.baseUrl + endpoint, {
headers: self.createHeaders(),
formData: variables
}).then(function (data) {
return data;
});
return Request.post(this.baseUrl + endpoint, {
headers: self.createHeaders(),
formData: variables
form: variables
}).then(function (data) {
return data;
});
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"HttpClient.js","sourceRoot":"","sources":["../../src/api/HttpClient.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"HttpClient.js","sourceRoot":"","sources":["../../src/api/HttpClient.ts"],"names":[],"mappings":";;AAAA,wDAAiD;AACjD,4CAAqC;AACrC,2CAA2C;AAE3C,IAAI,YAAY,GAAG,gBAAgB,CAAC;AACpC,IAAI,SAAS,GAAG,aAAa,CAAC;AAC9B,IAAI,OAAO,GAAG,SAAS,CAAC;AAExB,MAAqB,UAAU;IAM9B,YAAoB,OAAe,EAAU,SAAiB,EAAU,aAAiC;QAArF,YAAO,GAAP,OAAO,CAAQ;QAAU,cAAS,GAAT,SAAS,CAAQ;QAAU,kBAAa,GAAb,aAAa,CAAoB;QALzF,QAAG,GAAG,KAAK,CAAC;QACZ,SAAI,GAAG,MAAM,CAAC;QACd,cAAS,GAAG,WAAW,CAAC;QACjC,gBAAW,GAAG,KAAK,CAAC;QAG1B,EAAE;IACH,CAAC;IAED,aAAa;QACZ,IAAI,OAAO,GAAQ,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;QAE7B,iFAAiF;QACjF,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,SAAiB;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,OAAO;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,MAAoC,EAAE,QAAgB,EAAE,SAAc;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;iBACzB,IAAI,CAAC;gBACL,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB;oBAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC9D,OAAO,IAAI,OAAO,CAAO,UAAS,GAAG;oBACpC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACtB,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC;iBACD,IAAI,CAAC;gBACL,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;YAC3D,CAAC,CAAC;iBACD,IAAI,CAAC,UAAS,eAAe;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACzC,IAAI,IAAI,CAAC,MAAM,KAAK,sBAAY,CAAC,yBAAyB,EAAE;oBAC3D,OAAO,IAAI;yBACT,aAAa,EAAE,CAAC,EAAE;yBAClB,IAAI,CAAC;wBACL,OAAO,IAAI;6BACT,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;6BAC1C,IAAI,CAAC,UAAS,kBAAkB;4BAChC,OAAO,kBAAkB,CAAC;wBAC3B,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;iBACJ;qBAAM;oBACN,OAAO,IAAI,CAAC;iBACZ;YACF,CAAC,CAAC;iBACD,IAAI,CAAC,UAAS,IAAI;gBAClB,IAAI,IAAI,CAAC,MAAM,KAAK,sBAAY,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,sBAAY,CAAC,kBAAkB,EAAE;oBACzF,MAAM,sBAAY,CAAC,WAAW,CAC7B,IAAI,CAAC,MAAM,IAAI,sBAAY,CAAC,aAAa,EACzC,IAAI,CAAC,WAAW,IAAI,EAAE,CACtB,CAAC;iBACF;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;iBACD,IAAI,CAAC,UAAS,IAAI;gBAClB,sIAAsI;gBACtI,sHAAsH;gBACtH,uIAAuI;gBACvI,gCAAgC;gBAChC,OAAO,IAAI,OAAO,CAAC,UAAS,OAAO,EAAE,MAAM;oBAC1C,uHAAuH;oBACvH,IAAI,CAAC,IAAI,CAAC,WAAW;wBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,4BAA4B;oBACvG,gBAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC;iBACD,KAAK,CAAC,UAAS,KAAK;gBACpB,kBAAkB;gBAClB,wCAAwC;gBACxC,OAAO,IAAI,OAAO,CAAC,UAAS,OAAO,EAAE,MAAM;oBAC1C,IAAI,CAAC,IAAI,CAAC,WAAW;wBAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5C,gBAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACH,CAAC;IAED,aAAa,CAAC,MAAoC,EAAE,QAAgB,EAAE,SAAc;QACnF,IAAI,MAAM,KAAK,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEjE,IAAI,MAAM,KAAK,IAAI,CAAC,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAExG,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,QAAgB,EAAE,SAAc;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE;YAC3C,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE;YAC7B,EAAE,EAAE,SAAS;SACb,CAAC,CAAC,IAAI,CAAC,UAAS,IAAI;YACpB,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,QAAgB,EAAE,SAAc,EAAE,MAAoC;QAC7E,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,MAAM,KAAK,IAAI,CAAC,SAAS;YAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE;gBAC5C,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC7B,QAAQ,EAAE,SAAS;aACnB,CAAC,CAAC,IAAI,CAAC,UAAS,IAAI;gBACpB,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,CAAC;QAEJ,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE;YAC5C,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE;YAC7B,IAAI,EAAE,SAAS;SACf,CAAC,CAAC,IAAI,CAAC,UAAS,IAAI;YACpB,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AA5HD,6BA4HC"}
+7 -7
View File
@@ -11,7 +11,7 @@ const login_1 = require("./login");
const list_1 = require("./list");
const logout_1 = require("./logout");
const deploy_1 = require("./deploy");
// import serversetup = require('./serversetup');
const serversetup_1 = require("./serversetup");
// Setup
program.version(packagejson.version).description(packagejson.description);
// Commands
@@ -27,12 +27,12 @@ program.command('list').alias('ls').description('List all Captain machines curre
program.command('logout').description('Logout from a specific Captain machine.').action(() => {
logout_1.default();
});
// program
// .command('serversetup')
// .description('Performs necessary actions and prepares your Captain server.')
// .action(() => {
// serversetup();
// });
program
.command('serversetup')
.description('Performs necessary actions and prepares your Captain server.')
.action(() => {
serversetup_1.default();
});
program
.command('deploy')
.description("Deploy your app (current directory) to a specific Captain machine. You'll be prompted to choose your Captain machine.")
@@ -1 +1 @@
{"version":3,"file":"captainduckduck.js","sourceRoot":"","sources":["../../src/commands/captainduckduck.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAClD,kDAAkD;AAClD,cAAc,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEhE,oDAA6C;AAC7C,qCAAqC;AAErC,kBAAkB;AAClB,mCAA4B;AAC5B,iCAA0B;AAC1B,qCAA8B;AAC9B,qCAA8B;AAC9B,iDAAiD;AAEjD,QAAQ;AACR,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAE1E,WAAW;AAEX,OAAO;KACL,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,+FAA+F,CAAC;KAC5G,MAAM,CAAC,GAAG,EAAE;IACZ,eAAK,EAAE,CAAC;AACT,CAAC,CAAC,CAAC;AAEJ,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;IAC7G,cAAI,EAAE,CAAC;AACR,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,yCAAyC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;IAC5F,gBAAM,EAAE,CAAC;AACV,CAAC,CAAC,CAAC;AAEH,UAAU;AACV,2BAA2B;AAC3B,gFAAgF;AAChF,mBAAmB;AACnB,mBAAmB;AACnB,OAAO;AAEP,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CACX,uHAAuH,CACvH;KACA,MAAM,CAAC,uBAAuB,EAAE,6DAA6D,CAAC;KAC9F,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;KACnD,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACjD,MAAM,CAAC,oBAAoB,EAAE,sDAAsD,CAAC;KACpF,MAAM,CAAC,uBAAuB,EAAE,0CAA0C,CAAC;KAC3E,MAAM,CAAC,oBAAoB,EAAE,+CAA+C,CAAC;KAC7E,MAAM,CAAC,sBAAsB,EAAE,uDAAuD,CAAC;KACvF,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE;IACxB,gBAAM,CAAC,OAAO,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC;AAEJ,4BAA4B;AAC5B,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC5B,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7C,oBAAU,CAAC,UAAU,CAAC,sBAAsB,aAAa,gDAAgD,EAAE,IAAI,CAAC,CAAC;AAClH,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
{"version":3,"file":"captainduckduck.js","sourceRoot":"","sources":["../../src/commands/captainduckduck.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAClD,kDAAkD;AAClD,cAAc,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEhE,oDAA6C;AAC7C,qCAAqC;AAErC,kBAAkB;AAClB,mCAA4B;AAC5B,iCAA0B;AAC1B,qCAA8B;AAC9B,qCAA8B;AAC9B,+CAAwC;AAExC,QAAQ;AACR,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAE1E,WAAW;AAEX,OAAO;KACL,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,+FAA+F,CAAC;KAC5G,MAAM,CAAC,GAAG,EAAE;IACZ,eAAK,EAAE,CAAC;AACT,CAAC,CAAC,CAAC;AAEJ,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;IAC7G,cAAI,EAAE,CAAC;AACR,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,yCAAyC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;IAC5F,gBAAM,EAAE,CAAC;AACV,CAAC,CAAC,CAAC;AAEH,OAAO;KACL,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,GAAG,EAAE;IACZ,qBAAW,EAAE,CAAC;AACf,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CACX,uHAAuH,CACvH;KACA,MAAM,CAAC,uBAAuB,EAAE,6DAA6D,CAAC;KAC9F,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;KACnD,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACjD,MAAM,CAAC,oBAAoB,EAAE,sDAAsD,CAAC;KACpF,MAAM,CAAC,uBAAuB,EAAE,0CAA0C,CAAC;KAC3E,MAAM,CAAC,oBAAoB,EAAE,+CAA+C,CAAC;KAC7E,MAAM,CAAC,sBAAsB,EAAE,uDAAuD,CAAC;KACvF,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE;IACxB,gBAAM,CAAC,OAAO,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC;AAEJ,4BAA4B;AAC5B,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC5B,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7C,oBAAU,CAAC,UAAU,CAAC,sBAAsB,aAAa,gDAAgD,EAAE,IAAI,CAAC,CAAC;AAClH,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
+10 -7
View File
@@ -33,11 +33,15 @@ function login() {
}
if (!cleanUpUrl(value))
return 'This is an invalid URL: ' + value;
let found = undefined;
StorageHelper_1.default.get().getMachines().map((machine) => {
if (cleanUpUrl(machine.baseUrl) === cleanUpUrl(value)) {
return `${value} already exist as ${machine.name}. If you want to replace the existing entry, you have to first use <logout> command, and then re-login.`;
found = machine.name;
}
});
if (found) {
return `${value} already exist as ${found} in your currently logged in machines. If you want to replace the existing entry, you have to first use <logout> command, and then re-login.`;
}
if (value && value.trim()) {
return true;
}
@@ -67,12 +71,11 @@ function login() {
message: 'Enter a name for this Captain machine:',
default: CliHelper_1.default.get().findDefaultCaptainName(),
validate: (value) => {
StorageHelper_1.default.get().getMachines().map((machine) => {
if (machine.name === value) {
return `${value} already exist. If you want to replace the existing entry, you have to first use <logout> command, and then re-login.`;
}
});
if (value.match(/^[-\d\w]+$/i)) {
value = value.trim();
if (StorageHelper_1.default.get().findMachine(value)) {
return `${value} already exist. If you want to replace the existing entry, you have to first use <logout> command, and then re-login.`;
}
if (CliHelper_1.default.get().isNameValid(value)) {
return true;
}
return 'Please enter a Captain Name.';
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
+186
View File
@@ -0,0 +1,186 @@
#!/usr/bin/env node
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const inquirer = require("inquirer");
const Constants_1 = require("../utils/Constants");
const StdOutUtil_1 = require("../utils/StdOutUtil");
const ValidationsHandler_1 = require("../utils/ValidationsHandler");
const CliApiManager_1 = require("../api/CliApiManager");
const Utils_1 = require("../utils/Utils");
const CliHelper_1 = require("../utils/CliHelper");
const StorageHelper_1 = require("../utils/StorageHelper");
const ErrorFactory_1 = require("../utils/ErrorFactory");
const SpinnerHelper_1 = require("../utils/SpinnerHelper");
let newPasswordFirstTry = undefined;
let lastWorkingPassword = Constants_1.default.DEFAULT_PASSWORD;
let captainMachine = {
authToken: '',
baseUrl: '',
name: ''
};
const questions = [
{
type: 'list',
name: 'hasInstalledCaptain',
message: 'Have you already installed Captain on your server by running the following line:' +
'\nmkdir /captain && docker run -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock dockersaturn/captainduckduck ?',
default: 'Yes',
choices: ['Yes', 'No'],
filter: (value) => {
const answerFromUser = value.trim();
if (answerFromUser === 'Yes')
return answerFromUser;
StdOutUtil_1.default.printMessage('\n\nCannot start the setup process if Captain is not installed.');
StdOutUtil_1.default.printMessageAndExit('Please read tutorial on CaptainDuckDuck.com to learn how to install CaptainDuckDuck on a server.');
}
},
{
type: 'input',
default: Constants_1.default.SAMPLE_IP,
name: 'captainAddress',
message: 'Enter IP address of your captain server:',
filter: (value) => __awaiter(this, void 0, void 0, function* () {
const ipFromUser = value.trim();
if (ipFromUser === Constants_1.default.SAMPLE_IP || !ValidationsHandler_1.isIpAddress(ipFromUser)) {
StdOutUtil_1.default.printError(`\nThis is an invalid IP Address: ${ipFromUser}`, true);
}
try {
// login using captain42. and set the ipAddressToServer
captainMachine.baseUrl = `http://${ipFromUser}:3000`;
yield CliApiManager_1.default.get(captainMachine).getAuthToken(lastWorkingPassword);
}
catch (e) {
// User may have used a different default password
if (e.captainStatus === ErrorFactory_1.default.STATUS_WRONG_PASSWORD)
return '';
StdOutUtil_1.default.errorHandler(e);
}
return ipFromUser;
})
},
{
type: 'password',
name: 'captainOriginalPassword',
message: 'Enter your current password:',
when: () => !captainMachine.authToken,
filter: (value) => __awaiter(this, void 0, void 0, function* () {
try {
yield CliApiManager_1.default.get(captainMachine).getAuthToken(value);
lastWorkingPassword = value;
return '';
}
catch (e) {
StdOutUtil_1.default.errorHandler(e);
}
})
},
{
type: 'input',
name: 'captainRootDomain',
message: 'Enter a root domain for this Captain server. For example, enter test.yourdomain.com if you' +
' setup your DNS to point *.test.yourdomain.com to ip address of your server' +
': ',
filter: (value) => __awaiter(this, void 0, void 0, function* () {
const captainRootDomainFromUser = value.trim();
try {
yield CliApiManager_1.default.get(captainMachine).updateRootDomain(captainRootDomainFromUser);
captainMachine = Utils_1.default.copyObject(captainMachine);
captainMachine.baseUrl = `http://captain.${captainRootDomainFromUser}`;
}
catch (e) {
StdOutUtil_1.default.errorHandler(e);
}
return captainRootDomainFromUser;
})
},
{
type: 'password',
name: 'newPasswordFirstTry',
message: 'Enter a new password:',
filter: (value) => {
newPasswordFirstTry = value;
return value;
}
},
{
type: 'password',
name: 'newPassword',
message: 'Enter your new password again:',
filter: (value) => __awaiter(this, void 0, void 0, function* () {
const confirmPasswordValueFromUser = value;
if (newPasswordFirstTry !== confirmPasswordValueFromUser) {
StdOutUtil_1.default.printError('Passwords do not match. Try serversetup again.', true);
throw new Error('Password mismatch');
}
return '';
})
},
{
type: 'input',
name: 'emailAddress',
message: "Enter your 'valid' email address to enable HTTPS: ",
filter: (value) => __awaiter(this, void 0, void 0, function* () {
const emailAddressFromUser = value.trim();
let forcedSsl = false;
try {
SpinnerHelper_1.default.start('Enabling SSL... Takes a few seconds...');
yield CliApiManager_1.default.get(captainMachine).enableRootSsl(emailAddressFromUser);
captainMachine = Utils_1.default.copyObject(captainMachine);
captainMachine.baseUrl = captainMachine.baseUrl.replace('http://', 'https://');
yield CliApiManager_1.default.get(captainMachine).forceSsl(true);
forcedSsl = true;
yield CliApiManager_1.default.get(captainMachine).changePass(lastWorkingPassword, newPasswordFirstTry);
lastWorkingPassword = newPasswordFirstTry;
yield CliApiManager_1.default.get(captainMachine).getAuthToken(lastWorkingPassword);
SpinnerHelper_1.default.stop();
}
catch (e) {
if (forcedSsl) {
StdOutUtil_1.default.printError('Server is setup, but password was not changed due to an error. You cannot use serversetup again.');
StdOutUtil_1.default.printError(`Instead, go to ${captainMachine.baseUrl} and change your password on settings page.`);
StdOutUtil_1.default.printError(`Then, Use captainduckduck login on your local machine to connect to your server.`);
}
SpinnerHelper_1.default.fail();
StdOutUtil_1.default.errorHandler(e);
}
return emailAddressFromUser;
})
},
{
type: 'input',
name: 'captainName',
message: 'Enter a name for this Captain machine:',
default: CliHelper_1.default.get().findDefaultCaptainName(),
validate: (value) => {
const newMachineName = value.trim();
let errorMessage = undefined;
if (StorageHelper_1.default.get().findMachine(newMachineName)) {
return `${newMachineName} already exist. If you want to replace the existing entry, you have to first use <logout> command, and then re-login.`;
}
if (CliHelper_1.default.get().isNameValid(newMachineName)) {
captainMachine.name = newMachineName;
return true;
}
return 'Please enter a valid Captain Name. Small letters, numbers, single hyphen.';
}
}
];
function serversetup() {
return __awaiter(this, void 0, void 0, function* () {
StdOutUtil_1.default.printMessage('\nSetup your Captain server\n');
const answersIgnore = yield inquirer.prompt(questions);
StorageHelper_1.default.get().saveMachine(captainMachine);
StdOutUtil_1.default.printMessage(`\n\nCaptain is available at ${captainMachine.baseUrl}`);
StdOutUtil_1.default.printMessage('\nFor more details and docs see http://www.captainduckduck.com\n\n');
});
}
exports.default = serversetup;
//# sourceMappingURL=serversetup.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"serversetup.js","sourceRoot":"","sources":["../../src/commands/serversetup.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,qCAAqC;AACrC,kDAA2C;AAC3C,oDAA6C;AAC7C,oEAA0D;AAE1D,wDAAiD;AACjD,0CAAmC;AACnC,kDAA2C;AAC3C,0DAAmD;AACnD,wDAAiD;AACjD,0DAAmD;AAEnD,IAAI,mBAAmB,GAAuB,SAAS,CAAC;AACxD,IAAI,mBAAmB,GAAW,mBAAS,CAAC,gBAAgB,CAAC;AAE7D,IAAI,cAAc,GAAa;IAC9B,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE;CACR,CAAC;AAEF,MAAM,SAAS,GAAG;IACjB;QACC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EACN,kFAAkF;YAClF,6IAA6I;QAC9I,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,CAAE,KAAK,EAAE,IAAI,CAAE;QACxB,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzB,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAEpC,IAAI,cAAc,KAAK,KAAK;gBAAE,OAAO,cAAc,CAAC;YAEpD,oBAAU,CAAC,YAAY,CAAC,iEAAiE,CAAC,CAAC;YAE3F,oBAAU,CAAC,mBAAmB,CAC7B,kGAAkG,CAClG,CAAC;QACH,CAAC;KACD;IACD;QACC,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,mBAAS,CAAC,SAAS;QAC5B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,0CAA0C;QACnD,MAAM,EAAE,CAAO,KAAa,EAAE,EAAE;YAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAEhC,IAAI,UAAU,KAAK,mBAAS,CAAC,SAAS,IAAI,CAAC,gCAAW,CAAC,UAAU,CAAC,EAAE;gBACnE,oBAAU,CAAC,UAAU,CAAC,oCAAoC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;aAC9E;YAED,IAAI;gBACH,uDAAuD;gBACvD,cAAc,CAAC,OAAO,GAAG,UAAU,UAAU,OAAO,CAAC;gBACrD,MAAM,uBAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;aAC1E;YAAC,OAAO,CAAC,EAAE;gBACX,kDAAkD;gBAClD,IAAI,CAAC,CAAC,aAAa,KAAK,sBAAY,CAAC,qBAAqB;oBAAE,OAAO,EAAE,CAAC;gBACtE,oBAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;aAC3B;YAED,OAAO,UAAU,CAAC;QACnB,CAAC,CAAA;KACD;IACD;QACC,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,8BAA8B;QACvC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,SAAS;QACrC,MAAM,EAAE,CAAO,KAAa,EAAE,EAAE;YAC/B,IAAI;gBACH,MAAM,uBAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC5D,mBAAmB,GAAG,KAAK,CAAC;gBAC5B,OAAO,EAAE,CAAC;aACV;YAAC,OAAO,CAAC,EAAE;gBACX,oBAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;aAC3B;QACF,CAAC,CAAA;KACD;IACD;QACC,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,mBAAmB;QACzB,OAAO,EACN,4FAA4F;YAC5F,6EAA6E;YAC7E,IAAI;QACL,MAAM,EAAE,CAAO,KAAa,EAAE,EAAE;YAC/B,MAAM,yBAAyB,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI;gBACH,MAAM,uBAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;gBACpF,cAAc,GAAG,eAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBAClD,cAAc,CAAC,OAAO,GAAG,kBAAkB,yBAAyB,EAAE,CAAC;aACvE;YAAC,OAAO,CAAC,EAAE;gBACX,oBAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;aAC3B;YAED,OAAO,yBAAyB,CAAC;QAClC,CAAC,CAAA;KACD;IACD;QACC,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,uBAAuB;QAChC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzB,mBAAmB,GAAG,KAAK,CAAC;YAC5B,OAAO,KAAK,CAAC;QACd,CAAC;KACD;IACD;QACC,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,gCAAgC;QACzC,MAAM,EAAE,CAAO,KAAa,EAAE,EAAE;YAC/B,MAAM,4BAA4B,GAAG,KAAK,CAAC;YAE3C,IAAI,mBAAmB,KAAK,4BAA4B,EAAE;gBACzD,oBAAU,CAAC,UAAU,CAAC,gDAAgD,EAAE,IAAI,CAAC,CAAC;gBAC9E,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;aACrC;YACD,OAAO,EAAE,CAAC;QACX,CAAC,CAAA;KACD;IACD;QACC,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,oDAAoD;QAC7D,MAAM,EAAE,CAAO,KAAa,EAAE,EAAE;YAC/B,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI;gBACH,uBAAa,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBAC9D,MAAM,uBAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;gBAE5E,cAAc,GAAG,eAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBAClD,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBAE/E,MAAM,uBAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvD,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM,uBAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,mBAAmB,EAAE,mBAAoB,CAAC,CAAC;gBAC9F,mBAAmB,GAAG,mBAAoB,CAAC;gBAC3C,MAAM,uBAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;gBAC1E,uBAAa,CAAC,IAAI,EAAE,CAAC;aACrB;YAAC,OAAO,CAAC,EAAE;gBACX,IAAI,SAAS,EAAE;oBACd,oBAAU,CAAC,UAAU,CACpB,kGAAkG,CAClG,CAAC;oBACF,oBAAU,CAAC,UAAU,CACpB,kBAAkB,cAAc,CAAC,OAAO,6CAA6C,CACrF,CAAC;oBACF,oBAAU,CAAC,UAAU,CACpB,kFAAkF,CAClF,CAAC;iBACF;gBACD,uBAAa,CAAC,IAAI,EAAE,CAAC;gBACrB,oBAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;aAC3B;YAED,OAAO,oBAAoB,CAAC;QAC7B,CAAC,CAAA;KACD;IACD;QACC,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,wCAAwC;QACjD,OAAO,EAAE,mBAAS,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE;QACjD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;YAC3B,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAEpC,IAAI,YAAY,GAAG,SAAS,CAAC;YAC7B,IAAI,uBAAa,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE;gBACpD,OAAO,GAAG,cAAc,uHAAuH,CAAC;aAChJ;YAED,IAAI,mBAAS,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE;gBAChD,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC;gBACrC,OAAO,IAAI,CAAC;aACZ;YAED,OAAO,2EAA2E,CAAC;QACpF,CAAC;KACD;CACD,CAAC;AAEF,SAAe,WAAW;;QACzB,oBAAU,CAAC,YAAY,CAAC,+BAA+B,CAAC,CAAC;QAEzD,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEvD,uBAAa,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAEhD,oBAAU,CAAC,YAAY,CAAC,+BAA+B,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAEjF,oBAAU,CAAC,YAAY,CAAC,oEAAoE,CAAC,CAAC;IAC/F,CAAC;CAAA;AAED,kBAAe,WAAW,CAAC"}
+7
View File
@@ -8,6 +8,13 @@ class CliHelper {
CliHelper.instance = new CliHelper();
return CliHelper.instance;
}
isNameValid(value) {
value = value || '';
if (!!value && value.match(/^[-\d\w]+$/i) && value.indexOf('--') < 0) {
return true;
}
return false;
}
getAppsAsOptions(apps) {
const firstItemInOption = [
{
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"CliHelper.js","sourceRoot":"","sources":["../../src/utils/CliHelper.ts"],"names":[],"mappings":";;AAAA,mDAA4C;AAE5C,6CAAsC;AAEtC,MAAqB,SAAS;IAG7B,MAAM,CAAC,GAAG;QACT,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,SAAS,CAAC,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;QAC9D,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED,gBAAgB,CAAC,IAAW;QAC3B,MAAM,iBAAiB,GAAG;YACzB;gBACC,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;aACT;SACD,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,OAAO;gBACN,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;gBACtB,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;gBACvB,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;aACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAE,GAAG,iBAAiB,EAAE,GAAG,UAAU,CAAE,CAAC;IAChD,CAAC;IAED,oBAAoB;QACnB,MAAM,QAAQ,GAAG,uBAAa,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,iBAAiB,GAAG;YACzB;gBACC,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;aACT;SACD,CAAC;QACF,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/C,OAAO;gBACN,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;gBAC7C,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE;gBACxB,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;aAC9C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAE,GAAG,iBAAiB,EAAE,GAAG,cAAc,CAAE,CAAC;IACpD,CAAC;IAED,aAAa,CAAC,WAAmB;QAChC,MAAM,cAAc,GAAG,uBAAa,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACtE,oBAAU,CAAC,YAAY,CAAC,+BAA+B,cAAc,CAAC,IAAI,OAAO,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC;IACjH,CAAC;IAED,sBAAsB;QACrB,IAAI,aAAa,GAAG,uBAAa,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;YAC1C,aAAa,EAAE,CAAC;SAChB;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB,CAAC,MAAc;QAChC,MAAM,YAAY,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAEzD,OAAO,WAAW,YAAY,EAAE,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,YAAoB;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,uBAAa,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,OAAiB,EAAE,EAAE;YAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;gBAC3D,KAAK,GAAG,KAAK,CAAC;aACd;QACF,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACd,CAAC;CACD;AAhFD,4BAgFC"}
{"version":3,"file":"CliHelper.js","sourceRoot":"","sources":["../../src/utils/CliHelper.ts"],"names":[],"mappings":"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"}
+5 -2
View File
@@ -22,8 +22,11 @@ class StdOutUtils {
exit && process.exit(0);
}
errorHandler(error) {
if (error.status) {
this.printError(`\nError: ${error.status}\nError: ${error.description}`, true);
if (error.captainStatus) {
this.printError(`\nError Code: ${error.captainStatus} Message: ${error.captainMessage}`, true);
}
else if (error.status) {
this.printError(`\nError status: ${error.status} Message: ${error.description || error.message}`, true);
}
else {
this.printError(`\nError: ${error}`, true);
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"StdOutUtil.js","sourceRoot":"","sources":["../../src/utils/StdOutUtil.ts"],"names":[],"mappings":";;AAAA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,MAAM,WAAW;IAChB,YAAY,CAAC,OAAe;QAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAED,mBAAmB,CAAC,OAAe;QAClC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAErB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,OAAe,EAAE,IAAI,GAAG,KAAK;QAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,mBAAmB,CAAC,OAAe,EAAE,IAAI,GAAG,KAAK;QAChD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,IAAI,GAAG,KAAK;QACrC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAExC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,YAAY,CAAC,KAAU;QACtB,IAAI,KAAK,CAAC,MAAM,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;SAC/E;aAAM;YACN,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;SAC3C;IACF,CAAC;CACD;AACD,kBAAe,IAAI,WAAW,EAAE,CAAC"}
{"version":3,"file":"StdOutUtil.js","sourceRoot":"","sources":["../../src/utils/StdOutUtil.ts"],"names":[],"mappings":";;AAAA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,MAAM,WAAW;IAChB,YAAY,CAAC,OAAe;QAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAED,mBAAmB,CAAC,OAAe;QAClC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAErB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,OAAe,EAAE,IAAI,GAAG,KAAK;QAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,mBAAmB,CAAC,OAAe,EAAE,IAAI,GAAG,KAAK;QAChD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,IAAI,GAAG,KAAK;QACrC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAExC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,YAAY,CAAC,KAAU;QACtB,IAAI,KAAK,CAAC,aAAa,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,iBAAiB,KAAK,CAAC,aAAa,eAAe,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;SACjG;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,mBAAmB,KAAK,CAAC,MAAM,eAAe,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;SAC1G;aAAM;YACN,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;SAC3C;IACF,CAAC;CACD;AACD,kBAAe,IAAI,WAAW,EAAE,CAAC"}
+1 -1
View File
@@ -102,7 +102,7 @@ export default class ApiManager {
uploadAppData(appName: string, file: fs.ReadStream) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/appData/' + appName + '?detached=1', { sourceFile: file })); // TODO user/apps/appData
.then(http.fetch(http.POST_DATA, '/user/appData/' + appName + '?detached=1', { sourceFile: file })); // TODO user/apps/appData
}
uploadCaptainDefinitionContent(
+16 -7
View File
@@ -9,6 +9,7 @@ var CAPTAIN = 'captain';
export default class HttpClient {
public readonly GET = 'GET';
public readonly POST = 'POST';
public readonly POST_DATA = 'POST_DATA';
public isDestroyed = false;
constructor(private baseUrl: string, private authToken: string, private onAuthFailure: () => Promise<any>) {
@@ -32,7 +33,7 @@ export default class HttpClient {
this.isDestroyed = true;
}
fetch(method: 'GET' | 'POST', endpoint: string, variables: any) {
fetch(method: 'GET' | 'POST' | 'POST_DATA', endpoint: string, variables: any) {
const self = this;
return function(): Promise<any> {
return Promise.resolve() //
@@ -82,8 +83,8 @@ export default class HttpClient {
});
})
.catch(function(error) {
Logger.log('');
Logger.error(error.message || error);
// Logger.log('');
// Logger.error(error.message || error);
return new Promise(function(resolve, reject) {
if (!self.isDestroyed) return reject(error);
Logger.dev('Destroyed catch not called');
@@ -92,10 +93,10 @@ export default class HttpClient {
};
}
fetchInternal(method: 'GET' | 'POST', endpoint: string, variables: any) {
fetchInternal(method: 'GET' | 'POST' | 'POST_DATA', endpoint: string, variables: any) {
if (method === this.GET) return this.getReq(endpoint, variables);
if (method === this.POST) return this.postReq(endpoint, variables);
if (method === this.POST || method === this.POST_DATA) return this.postReq(endpoint, variables, method);
throw new Error('Unknown method: ' + method);
}
@@ -111,12 +112,20 @@ export default class HttpClient {
});
}
postReq(endpoint: string, variables: any) {
postReq(endpoint: string, variables: any, method: 'GET' | 'POST' | 'POST_DATA') {
const self = this;
if (method === this.POST_DATA)
return Request.post(this.baseUrl + endpoint, {
headers: self.createHeaders(),
formData: variables
}).then(function(data) {
return data;
});
return Request.post(this.baseUrl + endpoint, {
headers: self.createHeaders(),
formData: variables
form: variables
}).then(function(data) {
return data;
});
+7 -7
View File
@@ -12,7 +12,7 @@ import login from './login';
import list from './list';
import logout from './logout';
import deploy from './deploy';
// import serversetup = require('./serversetup');
import serversetup from './serversetup';
// Setup
program.version(packagejson.version).description(packagejson.description);
@@ -34,12 +34,12 @@ program.command('logout').description('Logout from a specific Captain machine.')
logout();
});
// program
// .command('serversetup')
// .description('Performs necessary actions and prepares your Captain server.')
// .action(() => {
// serversetup();
// });
program
.command('serversetup')
.description('Performs necessary actions and prepares your Captain server.')
.action(() => {
serversetup();
});
program
.command('deploy')
+12 -8
View File
@@ -12,7 +12,6 @@ import CliApiManager from '../api/CliApiManager';
const SAMPLE_DOMAIN = Constants.SAMPLE_DOMAIN;
const cleanUpUrl = Utils.cleanUpUrl;
async function login() {
StdOutUtil.printMessage('Login to a Captain Machine');
@@ -29,12 +28,17 @@ async function login() {
if (!cleanUpUrl(value)) return 'This is an invalid URL: ' + value;
let found = undefined;
StorageHelper.get().getMachines().map((machine) => {
if (cleanUpUrl(machine.baseUrl) === cleanUpUrl(value)) {
return `${value} already exist as ${machine.name}. If you want to replace the existing entry, you have to first use <logout> command, and then re-login.`;
found = machine.name;
}
});
if (found) {
return `${value} already exist as ${found} in your currently logged in machines. If you want to replace the existing entry, you have to first use <logout> command, and then re-login.`;
}
if (value && value.trim()) {
return true;
}
@@ -66,13 +70,13 @@ async function login() {
message: 'Enter a name for this Captain machine:',
default: CliHelper.get().findDefaultCaptainName(),
validate: (value: string) => {
StorageHelper.get().getMachines().map((machine) => {
if (machine.name === value) {
return `${value} already exist. If you want to replace the existing entry, you have to first use <logout> command, and then re-login.`;
}
});
value = value.trim();
if (value.match(/^[-\d\w]+$/i)) {
if (StorageHelper.get().findMachine(value)) {
return `${value} already exist. If you want to replace the existing entry, you have to first use <logout> command, and then re-login.`;
}
if (CliHelper.get().isNameValid(value)) {
return true;
}
+202
View File
@@ -0,0 +1,202 @@
#!/usr/bin/env node
import * as inquirer from 'inquirer';
import Constants from '../utils/Constants';
import StdOutUtil from '../utils/StdOutUtil';
import { isIpAddress } from '../utils/ValidationsHandler';
import { IMachine } from '../models/storage/StoredObjects';
import CliApiManager from '../api/CliApiManager';
import Utils from '../utils/Utils';
import CliHelper from '../utils/CliHelper';
import StorageHelper from '../utils/StorageHelper';
import ErrorFactory from '../utils/ErrorFactory';
import SpinnerHelper from '../utils/SpinnerHelper';
let newPasswordFirstTry: string | undefined = undefined;
let lastWorkingPassword: string = Constants.DEFAULT_PASSWORD;
let captainMachine: IMachine = {
authToken: '',
baseUrl: '',
name: ''
};
const questions = [
{
type: 'list',
name: 'hasInstalledCaptain',
message:
'Have you already installed Captain on your server by running the following line:' +
'\nmkdir /captain && docker run -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock dockersaturn/captainduckduck ?',
default: 'Yes',
choices: [ 'Yes', 'No' ],
filter: (value: string) => {
const answerFromUser = value.trim();
if (answerFromUser === 'Yes') return answerFromUser;
StdOutUtil.printMessage('\n\nCannot start the setup process if Captain is not installed.');
StdOutUtil.printMessageAndExit(
'Please read tutorial on CaptainDuckDuck.com to learn how to install CaptainDuckDuck on a server.'
);
}
},
{
type: 'input',
default: Constants.SAMPLE_IP,
name: 'captainAddress',
message: 'Enter IP address of your captain server:',
filter: async (value: string) => {
const ipFromUser = value.trim();
if (ipFromUser === Constants.SAMPLE_IP || !isIpAddress(ipFromUser)) {
StdOutUtil.printError(`\nThis is an invalid IP Address: ${ipFromUser}`, true);
}
try {
// login using captain42. and set the ipAddressToServer
captainMachine.baseUrl = `http://${ipFromUser}:3000`;
await CliApiManager.get(captainMachine).getAuthToken(lastWorkingPassword);
} catch (e) {
// User may have used a different default password
if (e.captainStatus === ErrorFactory.STATUS_WRONG_PASSWORD) return '';
StdOutUtil.errorHandler(e);
}
return ipFromUser;
}
},
{
type: 'password',
name: 'captainOriginalPassword',
message: 'Enter your current password:',
when: () => !captainMachine.authToken, // The default password didn't work
filter: async (value: string) => {
try {
await CliApiManager.get(captainMachine).getAuthToken(value);
lastWorkingPassword = value;
return '';
} catch (e) {
StdOutUtil.errorHandler(e);
}
}
},
{
type: 'input',
name: 'captainRootDomain',
message:
'Enter a root domain for this Captain server. For example, enter test.yourdomain.com if you' +
' setup your DNS to point *.test.yourdomain.com to ip address of your server' +
': ',
filter: async (value: string) => {
const captainRootDomainFromUser = value.trim();
try {
await CliApiManager.get(captainMachine).updateRootDomain(captainRootDomainFromUser);
captainMachine = Utils.copyObject(captainMachine);
captainMachine.baseUrl = `http://captain.${captainRootDomainFromUser}`;
} catch (e) {
StdOutUtil.errorHandler(e);
}
return captainRootDomainFromUser;
}
},
{
type: 'password',
name: 'newPasswordFirstTry',
message: 'Enter a new password:',
filter: (value: string) => {
newPasswordFirstTry = value;
return value;
}
},
{
type: 'password',
name: 'newPassword',
message: 'Enter your new password again:',
filter: async (value: string) => {
const confirmPasswordValueFromUser = value;
if (newPasswordFirstTry !== confirmPasswordValueFromUser) {
StdOutUtil.printError('Passwords do not match. Try serversetup again.', true);
throw new Error('Password mismatch');
}
return '';
}
},
{
type: 'input',
name: 'emailAddress',
message: "Enter your 'valid' email address to enable HTTPS: ",
filter: async (value: string) => {
const emailAddressFromUser = value.trim();
let forcedSsl = false;
try {
SpinnerHelper.start('Enabling SSL... Takes a few seconds...');
await CliApiManager.get(captainMachine).enableRootSsl(emailAddressFromUser);
captainMachine = Utils.copyObject(captainMachine);
captainMachine.baseUrl = captainMachine.baseUrl.replace('http://', 'https://');
await CliApiManager.get(captainMachine).forceSsl(true);
forcedSsl = true;
await CliApiManager.get(captainMachine).changePass(lastWorkingPassword, newPasswordFirstTry!);
lastWorkingPassword = newPasswordFirstTry!;
await CliApiManager.get(captainMachine).getAuthToken(lastWorkingPassword);
SpinnerHelper.stop();
} catch (e) {
if (forcedSsl) {
StdOutUtil.printError(
'Server is setup, but password was not changed due to an error. You cannot use serversetup again.'
);
StdOutUtil.printError(
`Instead, go to ${captainMachine.baseUrl} and change your password on settings page.`
);
StdOutUtil.printError(
`Then, Use captainduckduck login on your local machine to connect to your server.`
);
}
SpinnerHelper.fail();
StdOutUtil.errorHandler(e);
}
return emailAddressFromUser;
}
},
{
type: 'input',
name: 'captainName',
message: 'Enter a name for this Captain machine:',
default: CliHelper.get().findDefaultCaptainName(),
validate: (value: string) => {
const newMachineName = value.trim();
let errorMessage = undefined;
if (StorageHelper.get().findMachine(newMachineName)) {
return `${newMachineName} already exist. If you want to replace the existing entry, you have to first use <logout> command, and then re-login.`;
}
if (CliHelper.get().isNameValid(newMachineName)) {
captainMachine.name = newMachineName;
return true;
}
return 'Please enter a valid Captain Name. Small letters, numbers, single hyphen.';
}
}
];
async function serversetup() {
StdOutUtil.printMessage('\nSetup your Captain server\n');
const answersIgnore = await inquirer.prompt(questions);
StorageHelper.get().saveMachine(captainMachine);
StdOutUtil.printMessage(`\n\nCaptain is available at ${captainMachine.baseUrl}`);
StdOutUtil.printMessage('\nFor more details and docs see http://www.captainduckduck.com\n\n');
}
export default serversetup;
+8
View File
@@ -10,6 +10,14 @@ export default class CliHelper {
return CliHelper.instance;
}
isNameValid(value: string) {
value = value || '';
if (!!value && value.match(/^[-\d\w]+$/i) && value.indexOf('--') < 0) {
return true;
}
return false;
}
getAppsAsOptions(apps: any[]) {
const firstItemInOption = [
{
+4 -2
View File
@@ -29,8 +29,10 @@ class StdOutUtils {
}
errorHandler(error: any) {
if (error.status) {
this.printError(`\nError: ${error.status}\nError: ${error.description}`, true);
if (error.captainStatus) {
this.printError(`\nError Code: ${error.captainStatus} Message: ${error.captainMessage}`, true);
} else if (error.status) {
this.printError(`\nError status: ${error.status} Message: ${error.description || error.message}`, true);
} else {
this.printError(`\nError: ${error}`, true);
}