UNPKG

volxitcloud

Version:

CLI tool for VolxitCloud. See Volxit.com for more details.

161 lines 6.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.userCancelOperation = exports.getErrorForEmail = exports.getErrorForBranchName = exports.getErrorForAppName = exports.getErrorForMachineName = exports.getErrorForPassword = exports.getErrorForDomain = exports.getErrorForIP = exports.isNameValid = exports.validateDefinitionFile = exports.validateIsGitRepository = void 0; const fs = require("fs-extra"); const child_process_1 = require("child_process"); const command_exists_1 = require("command-exists"); const StdOutUtil_1 = require("./StdOutUtil"); const StorageHelper_1 = require("./StorageHelper"); const Constants_1 = require("./Constants"); const Utils_1 = require("./Utils"); const isWindows = process.platform === 'win32'; function validateIsGitRepository() { if (!fs.pathExistsSync('./.git')) { StdOutUtil_1.default.printError('You are not in a git root directory: this command will only deploy the current directory.\n' + 'Run "volxitcloud deploy --help" to know more deployment options... (e.g. tar file or image name)\n', true); } if (!(0, command_exists_1.sync)('git')) { StdOutUtil_1.default.printError('"git" command not found: VolxitCloud needs "git" to create tar file from your branch source files.\n' + 'Run "volxitcloud deploy --help" to know more deployment options... (e.g. tar file or image name)\n', true); } } exports.validateIsGitRepository = validateIsGitRepository; function validateDefinitionFile() { if (!fs.pathExistsSync('./volxit-definition')) { if (fs.pathExistsSync('./Dockerfile')) { StdOutUtil_1.default.printWarning('**** Warning ****'); StdOutUtil_1.default.printMessage('No volxit-definition was found in main directory: falling back to Dockerfile.\n'); } else { StdOutUtil_1.default.printWarning('**** Warning ****'); StdOutUtil_1.default.printMessage('No volxit-definition was found in main directory: unless you have specified a special path for your volxit-definition, this build will fail!\n'); } } else { let content = null; try { content = JSON.parse(fs.readFileSync('./volxit-definition', 'utf8')); } catch (e) { StdOutUtil_1.default.printError(`volxit-definition file is not a valid JSON!\n${e.message || e}\n`, true); } if (!content || !content.schemaVersion) { StdOutUtil_1.default.printError('volxit-definition needs "schemaVersion": please see docs!\n', true); } } } exports.validateDefinitionFile = validateDefinitionFile; function isNameValid(value) { return !!(value && value.match(/^[-\d\w]+$/i) && !value.includes('--')); } exports.isNameValid = isNameValid; function getErrorForIP(value) { value = value.trim(); if (value === Constants_1.default.SAMPLE_IP) { return 'Enter a valid IP.'; } if (!Utils_1.default.isIpAddress(value)) { return `This is an invalid IP: ${value}.`; } return true; } exports.getErrorForIP = getErrorForIP; function getErrorForDomain(value, skipAlreadyStored) { if (value === Constants_1.default.SAMPLE_DOMAIN) { return 'Enter a valid URL.'; } const cleaned = Utils_1.default.cleanAdminDomainUrl(value); if (!cleaned) { return `This is an invalid URL: ${StdOutUtil_1.default.getColoredMachineUrl(value)}.`; } if (!skipAlreadyStored) { const found = StorageHelper_1.default.get() .getMachines() .find(machine => Utils_1.default.cleanAdminDomainUrl(machine.baseUrl) === cleaned); if (found) { return `${StdOutUtil_1.default.getColoredMachineUrl(cleaned)} already exist as ${StdOutUtil_1.default.getColoredMachineName(found.name)} 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.`; } } return true; } exports.getErrorForDomain = getErrorForDomain; function getErrorForPassword(value, constraint) { if (!value || !value.trim()) { return 'Please enter password.'; } if (typeof constraint === 'number' && value.length < constraint) { return `Password is too short, min ${constraint} characters.`; } if (typeof constraint === 'string' && value !== constraint) { return `Passwords do not match.`; } return true; } exports.getErrorForPassword = getErrorForPassword; function getErrorForMachineName(value, checkExisting) { value = value.trim(); const exist = StorageHelper_1.default.get().findMachine(value) ? true : false; if (exist && !checkExisting) { return `${StdOutUtil_1.default.getColoredMachineName(value)} already exist. If you want to replace the existing entry, you have to first use <logout> command, and then re-login.`; } if (checkExisting && !exist) { return `${StdOutUtil_1.default.getColoredMachineName(value)} VolxitCloud machine not exist.`; } if (checkExisting || isNameValid(value)) { return true; } return 'Please enter a valid VolxitCloud machine name: small letters, numbers, single hyphen.'; } exports.getErrorForMachineName = getErrorForMachineName; function getErrorForAppName(apps, value) { value = value.trim(); const app = apps.find(a => a.appName === value); if (!app) { return `${StdOutUtil_1.default.getColoredAppName(value)} app not exist on this VolxitCloud machine.`; } if (app.isAppBuilding) { return `${StdOutUtil_1.default.getColoredAppName(value)} app is currently in a building process.`; } return true; } exports.getErrorForAppName = getErrorForAppName; function getErrorForBranchName(value) { if (!value || !value.trim()) { return 'Please enter branch name.'; } value = value.trim(); try { const cmd = isWindows ? (0, child_process_1.execSync)(`git rev-parse ${value} > NUL`) : (0, child_process_1.execSync)(`git rev-parse ${value} 2>/dev/null`); if (cmd) { return true; } } catch (e) { // Do nothing } return `Cannot find hash of last commit on branch "${value}".`; } exports.getErrorForBranchName = getErrorForBranchName; function getErrorForEmail(value) { if (!value || !value.trim()) { return 'Please enter email.'; } if (!Utils_1.default.isValidEmail(value)) { return 'Please enter a valid email.'; } return true; } exports.getErrorForEmail = getErrorForEmail; function userCancelOperation(cancel, c) { if (cancel) { StdOutUtil_1.default.printMessage((c ? '\n' : '') + '\nOperation cancelled by the user!' + (!c ? '\n' : ''), true); } return false; } exports.userCancelOperation = userCancelOperation; //# sourceMappingURL=ValidationsHandler.js.map