diff --git a/app-cli/helpers/MachineHelper.js b/app-cli/helpers/MachineHelper.js new file mode 100644 index 0000000..74b20d2 --- /dev/null +++ b/app-cli/helpers/MachineHelper.js @@ -0,0 +1,64 @@ +const { printMessage } = require("../utils/messageHandler") +const configstore = require("configstore") +const packagejson = require("../package.json") +const configs = new configstore(packagejson.name, { + captainMachines: [] +}) + +class MachineHelper { + constructor() { + this.machines = configs.get("captainMachines") + } + + getMachinesAsOptions() { + const firstItemInOption = [ + { + name: "-- CANCEL --", + value: "", + short: "" + } + ] + const listOfMachines = this.machines.map(machine => { + return { + name: `${machine.name} at ${machine.baseUrl}`, + value: `${machine.name}`, + short: `${machine.name} at ${machine.baseUrl}` + } + }) + + return [...firstItemInOption, ...listOfMachines] + } + + setMachines(machines) { + this.machines = machines + } + + addMachine(newMachine) { + const tempMachines = this.machines + const newMachines = [...tempMachines, newMachine] + + // Add to local storage + configs.set("captainMachines", newMachines) + + this.setMachines(configs.get("captainMachines")) + } + + logoutMachine(machineName) { + const removedMachine = MachineHelper.machines.filter( + machine => machine.name === machineName + )[0] + const newMachines = MachineHelper.machines.filter( + machine => machine.name !== machineName + ) + + MachineHelper.setMachines(newMachines) + + printMessage( + `You are now logged out from ${removedMachine.name} at ${ + removedMachine.baseUrl + }...\n` + ) + } +} + +module.exports = new MachineHelper() diff --git a/app-cli/lib/list.js b/app-cli/lib/list.js index 0418def..855fc61 100644 --- a/app-cli/lib/list.js +++ b/app-cli/lib/list.js @@ -1,9 +1,5 @@ const chalk = require("chalk") -const configstore = require("configstore") -const packagejson = require("../package.json") -const configs = new configstore(packagejson.name, { - captainMachines: [] -}) +const MachineHelper = require("../helpers/MachineHelper") function _displayMachine(machine) { console.log( @@ -17,9 +13,7 @@ function _displayMachine(machine) { function list() { console.log("\nLogged in Captain Machines:\n") - const machines = configs.get("captainMachines") - - machines.map(machine => { + MachineHelper.machines.map(machine => { _displayMachine(machine) }) diff --git a/app-cli/lib/login.js b/app-cli/lib/login.js index e96bc7a..ef5c822 100644 --- a/app-cli/lib/login.js +++ b/app-cli/lib/login.js @@ -1,24 +1,11 @@ +const MachineHelper = require("../helpers/MachineHelper") const { printGreenMessage, printError } = require("../utils/messageHandler") const inquirer = require("inquirer") -const configstore = require("configstore") -const packagejson = require("../package.json") -const configs = new configstore(packagejson.name, { - captainMachines: [] -}) -const machines = configs.get("captainMachines") const { cleanUpUrl, findDefaultCaptainName } = require("../utils/loginHelpers") const { printMessage } = require("../utils/messageHandler") const { SAMPLE_DOMAIN } = require("../utils/constants") const LoginApi = require("../api/LoginApi") -function setCaptainMachine(newMachine) { - const machines = configs.get("captainMachines") - - machines.push(newMachine) - - configs.set("captainMachines", machines) -} - function login() { printMessage("Login to a Captain Machine") @@ -36,7 +23,7 @@ function login() { if (!cleanUpUrl(value)) return "This is an invalid URL: " + value - machines.map(machine => { + MachineHelper.machines.map(machine => { if (cleanUpUrl(machine.baseUrl) === cleanUpUrl(value)) { return `${value} already exist as ${ machine.name @@ -75,7 +62,7 @@ function login() { message: "Enter a name for this Captain machine:", default: findDefaultCaptainName(), validate: value => { - machines.map(machine => { + MachineHelper.machines.map(machine => { if (machine.name === value) { return `${value} already exist. If you want to replace the existing entry, you have to first use command, and then re-login.` } @@ -112,17 +99,17 @@ function login() { throw new Error(JSON.stringify(response, null, 2)) } - printGreenMessage(`Logged in successfully to ${baseUrl}`) - - printGreenMessage(`Authorization token is now saved as ${captainName} \n`) - const newMachine = { authToken: response.token, baseUrl, name: captainName } - setCaptainMachine(newMachine) + MachineHelper.addMachine(newMachine) + + printGreenMessage(`Logged in successfully to ${baseUrl}`) + + printGreenMessage(`Authorization token is now saved as ${captainName} \n`) } catch (error) { const errorMessage = error.message ? error.message : error diff --git a/app-cli/lib/logout.js b/app-cli/lib/logout.js index d5355c9..2eb7e46 100644 --- a/app-cli/lib/logout.js +++ b/app-cli/lib/logout.js @@ -1,33 +1,9 @@ +const MachineHelper = require("../helpers/MachineHelper") const { printMessage } = require("../utils/messageHandler") const inquirer = require("inquirer") -const configstore = require("configstore") -const packagejson = require("../package.json") -const configs = new configstore(packagejson.name, { - captainMachines: [] -}) -const machines = configs.get("captainMachines") - -function getMachineList() { - const firstItemInOption = [ - { - name: "-- CANCEL --", - value: "", - short: "" - } - ] - const listOfMachines = machines.map(machine => { - return { - name: `${machine.name} at ${machine.baseUrl}`, - value: `${machine.name}`, - short: `${machine.name} at ${machine.baseUrl}` - } - }) - - return [...firstItemInOption, ...listOfMachines] -} function generateQuestions() { - const listOfMachines = getMachineList() + const listOfMachines = MachineHelper.getMachinesAsOptions() return [ { @@ -46,21 +22,6 @@ function generateQuestions() { ] } -function removeMachineFromLocalStorage(machineName) { - const removedMachine = machines.filter( - machine => machine.name === machineName - )[0] - const newMachines = machines.filter(machine => machine.name !== machineName) - - configs.set("captainMachines", newMachines) - - printMessage( - `You are now logged out from ${removedMachine.name} at ${ - removedMachine.baseUrl - }...\n` - ) -} - function logout() { const questions = generateQuestions() @@ -75,7 +36,7 @@ function logout() { return } - removeMachineFromLocalStorage(captainNameToLogout) + MachineHelper.logoutMachine(captainNameToLogout) }) } diff --git a/app-cli/utils/loginHelpers.js b/app-cli/utils/loginHelpers.js index fbb34a8..6190357 100644 --- a/app-cli/utils/loginHelpers.js +++ b/app-cli/utils/loginHelpers.js @@ -1,9 +1,4 @@ -const configstore = require("configstore") -const packagejson = require("../package.json") -const configs = new configstore(packagejson.name, { - captainMachines: [] -}) -const machines = configs.get("captainMachines") +const MachineHelper = require("../helpers/MachineHelper") function cleanUpUrl(url) { if (!url || !url.length) return null @@ -22,19 +17,8 @@ function cleanUpUrl(url) { .trim() } -function _getCaptainFullName(suffix) { - const formatSuffix = suffix < 10 ? `0${suffix}` : suffix - - return `captain-${formatSuffix}` -} - -const _isSuffixValid = suffixNumber => - machines.map(machine => { - machine.name !== _getCaptainFullName(suffixNumber) - }) - function findDefaultCaptainName() { - let currentSuffix = machines.length + 1 + let currentSuffix = MachineHelper.machines.length + 1 while (!_isSuffixValid(currentSuffix)) { currentSuffix++ @@ -43,6 +27,17 @@ function findDefaultCaptainName() { return _getCaptainFullName(currentSuffix) } +function _getCaptainFullName(suffix) { + const formatSuffix = suffix < 10 ? `0${suffix}` : suffix + + return `captain-${formatSuffix}` +} + +const _isSuffixValid = suffixNumber => + MachineHelper.machines.map(machine => { + machine.name !== _getCaptainFullName(suffixNumber) + }) + module.exports = { cleanUpUrl, findDefaultCaptainName