UNPKG

@veecode-platform/safira-cli

Version:

Generate a microservice project from your spec.

102 lines (101 loc) 5.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const color_1 = tslib_1.__importDefault(require("@oclif/color")); const core_1 = require("@oclif/core"); const inquirer_1 = tslib_1.__importDefault(require("inquirer")); const cache_manager_1 = require("../../../cache/cache-manager"); const mockserver_manager_1 = require("../../../mockserver/mockserver-manager"); const mockserver_service_1 = require("../../../mockserver/mockserver-service"); const spec_discovery_1 = require("../../../safira-globals/spec-discovery"); const constants_1 = require("../../../utils/commands/constants"); const file_system_utils_1 = require("../../../utils/file-system-utils"); const url_utils_1 = require("../../../utils/url-utils"); const safiraColors = tslib_1.__importStar(require("../../../colors.json")); const safira_utils_1 = require("../../../safira-project/safira-utils"); class MockServerSpecDeploy extends core_1.Command { async run() { const { args, flags } = await this.parse(MockServerSpecDeploy); const projectFolder = file_system_utils_1.FileSystemUtils.getCurrentPath(); let openApiFile = ""; try { openApiFile = await spec_discovery_1.SpecDiscovery.discoverSpecs({ projectPath: projectFolder }); } catch (error) { console.log(color_1.default.red(error.message)); process.exit(2); } const mockserverCache = cache_manager_1.CacheManager.instance.getCache(cache_manager_1.CacheName.mockserver); const answers = await inquirer_1.default.prompt([ { when: () => !flags["server-url"] && mockserverCache.length > 0, type: "list", name: "server-list", message: "Mock server url:", choices: [...mockserverCache, { name: color_1.default.bold("Input other value."), value: "other" }], }, { when: answers => !flags["server-url"] && (answers["server-list"] === "other" || !answers["server-list"]), type: "input", name: "server-url", message: "Mock server url:", default: "http://localhost:1080", validate: async (url) => url_utils_1.UrlUtils.parse(url).pathname === "/" && (await mockserver_service_1.MockserverService.instance.isMockserverUp(`${url}/mockserver/dashboard`)) ? true : "Invalid mock server url", }, { type: "list", name: "has-api-key", message: "Has Mockserver Api Key?", choices: constants_1.yesNoList, default: "yes", }, { when: answers => answers["has-api-key"] === "yes", type: "input", name: "api-key", message: "Mock server Api Key:", }, { when: () => !flags.context, type: "input", name: "context", message: "Mock API context:", default: file_system_utils_1.FileSystemUtils.getHighFolderFromPath(projectFolder), }, ]); if (answers["server-url"]) { cache_manager_1.CacheManager.instance.addItem(cache_manager_1.CacheName.mockserver, answers["server-url"]); } if ((answers["server-list"] && answers["server-list"] !== "other") && !(url_utils_1.UrlUtils.parse(answers["server-list"]).pathname === "/" && await mockserver_service_1.MockserverService.instance.isMockserverUp(`${answers["server-list"]}/mockserver/dashboard`))) { console.log(color_1.default.red("Mockserver is not running.")); process.exit(2); } const serverUrl = flags["server-url"] || answers["server-url"] || answers["server-list"]; const apiKey = flags["api-key"] || answers["api-key"]; const context = flags.context || answers.context; try { await mockserver_manager_1.MockserverManager.instance.publishMock(projectFolder, serverUrl, openApiFile, context, apiKey); } catch (error) { this.error(color_1.default.red(error.message)); } finally { safira_utils_1.SafiraUtils.deleteTmpFolder(); } console.log(); const neonGreen = color_1.default.hex(safiraColors["neon-green"]); this.log(neonGreen("Apis available at"), neonGreen.bold(`${serverUrl.endsWith("/") ? serverUrl : serverUrl + "/"}${context}/*`)); } } exports.default = MockServerSpecDeploy; MockServerSpecDeploy.description = "Deploys the spec to the mock server"; MockServerSpecDeploy.examples = [ "<%= config.bin %> <%= command.id %>", ]; MockServerSpecDeploy.flags = { help: core_1.Flags.help({}), "server-url": core_1.Flags.url({ description: "mock server url" }), context: core_1.Flags.string({ description: "api context" }), "api-key": core_1.Flags.string({ description: "api key" }), }; MockServerSpecDeploy.args = [];