UNPKG

@sap/generator-base-mta-module

Version:

Generator for collecting user inputs on multitarget application module

78 lines 3.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupPromptsSteps = exports.validateModuleName = exports.validateTargetFolderPath = exports.validateMtaPath = void 0; const chalk_1 = require("chalk"); const fs = require("fs"); const path = require("path"); const mta_lib_1 = require("@sap/mta-lib"); const messages_1 = require("./messages"); exports.validateMtaPath = async (mtaFilePath) => { // validate input is not empty if (!mtaFilePath) { return chalk_1.default.red(messages_1.messages.MTA_PATH_VALIDATION_ERR); } // validate mta.yaml file exists (in case, user mentioned file other than mta.yaml, or non existing file) const mtaFolderPath = path.dirname(mtaFilePath); const mtaInstance = new mta_lib_1.default(mtaFolderPath); try { const filePath = await mtaInstance.getMtaFilePath(false); if (filePath === mtaFilePath) { return true; } return chalk_1.default.red(messages_1.messages.MTA_PATH_VALIDATION_ERR); } catch (error) { return chalk_1.default.red(messages_1.messages.MTA_PATH_VALIDATION_ERR); } }; exports.validateTargetFolderPath = (folderPath) => { // validate input is not empty if (!folderPath) { return chalk_1.default.red(messages_1.messages.TARGET_FOLDER_PATH_VALIDATION_ERR); } // validate folder exists const result = fs.existsSync(folderPath); if (result) { return true; } return chalk_1.default.red(messages_1.messages.TARGET_FOLDER_PATH_VALIDATION_ERR); }; exports.validateModuleName = async (name, mtaFolderPath, targetFolderPath, defModuleName) => { // validate input is not empty if (!name) { return chalk_1.default.red(messages_1.messages.EMPTY_MODULE_NAME_VALIDATION_ERR); } // validate name matches the allowed pattern const re = /^[a-zA-Z_][a-zA-Z0-9_\-.]*(?<![.])$/; const result = re.test(name); if (!result) { return chalk_1.default.red(messages_1.messages.MODULE_NAME_VALIDATION_ERR); } // user accepted the default proposed, no need to validate module and folder existence, as it is done before if (name === defModuleName) { return true; } // validate module name is not in mta.yaml already const mtaInstance = new mta_lib_1.default(mtaFolderPath); const moduleExists = await mtaInstance.doesNameExist(name); if (moduleExists) { return chalk_1.default.red(messages_1.messages.MODULE_NAME_EXISTS_ERR); } // validate module folder name is not in target folder already if (!targetFolderPath) { return true; } const folderExists = fs.existsSync(path.join(targetFolderPath, name)); if (folderExists) { return chalk_1.default.red(messages_1.messages.MODULE_FOLDER_EXISTS_ERR); } return true; }; exports.setupPromptsSteps = (parentPrompts, parentPromptsQuantity) => { // every prompt added is correspondent to this.prompt call in the generator const prompts = [ { name: messages_1.messages.GENERAL_STEP, description: "" } ]; parentPrompts.splice(parentPromptsQuantity, 0, prompts); }; //# sourceMappingURL=promptValidator.js.map