UNPKG

@nxrocks/nx-ktor

Version:

Nx plugin to generate, run, package, build (and more) Ktor projects inside your Nx workspace

76 lines 3.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_KTOR_INITIALIZR_URL = void 0; exports.runKtorPluginCommand = runKtorPluginCommand; exports.buildKtorDownloadUrl = buildKtorDownloadUrl; exports.isKtorProject = isKtorProject; exports.fetchKtorFeatures = fetchKtorFeatures; const index_1 = require("../index"); const common_jvm_1 = require("@nxrocks/common-jvm"); const constants_1 = require("../core/constants"); const node_fetch_1 = require("node-fetch"); const getBuilder = (cwd) => { if ((0, common_jvm_1.hasMavenProject)(cwd)) return constants_1.MAVEN_BUILDER; if ((0, common_jvm_1.hasGradleProject)(cwd)) return constants_1.GRADLE_BUILDER; throw new Error(`Cannot determine the build system. No 'pom.xml' nor 'build.gradle' file found under '${cwd}'`); }; exports.DEFAULT_KTOR_INITIALIZR_URL = 'https://start.ktor.io'; function runKtorPluginCommand(commandAlias, params, options = { cwd: process.cwd(), ignoreWrapper: false, useLegacyWrapper: true, runFromParentModule: false, }) { //force use legacy wrapper for all executors options = { ...options, useLegacyWrapper: true }; return (0, common_jvm_1.runBuilderCommand)(commandAlias, getBuilder, params, options); } function buildKtorDownloadUrl(options) { const url = `${options.ktorInitializrUrl}/project/generate`; const params = { settings: { project_name: `${options.groupId}.${options.artifactId}`, company_website: options.groupId, ktor_version: options.ktorVersion, kotlin_version: options.kotlinVersion, build_system: options.buildSystem, engine: options.engine, }, features: options.projectFeatures, configurationOption: options.configurationLocation, addDefaultRoutes: !options.skipCodeSamples, addWrapper: true, }; return { url, params }; } function isKtorProject(project) { if ((0, common_jvm_1.hasMultiModuleMavenProject)(project.root) || (0, common_jvm_1.hasMultiModuleGradleProject)(project.root)) return true; if ((0, common_jvm_1.isMavenProject)(project)) { return (0, common_jvm_1.checkProjectBuildFileContains)(project, { fragments: ['<version>${ktor_version}</version>'], }); } if ((0, common_jvm_1.isGradleProject)(project)) { return (0, common_jvm_1.checkProjectBuildFileContains)(project, { fragments: ["id 'io.ktor.plugin'", 'id("io.ktor.plugin")'], }); } return false; } async function fetchKtorFeatures(options) { const version = options.ktorVersion ?? 'main'; const url = `https://raw.githubusercontent.com/ktorio/ktor/${version}/settings.gradle.kts`; const response = await (0, node_fetch_1.default)(url, (0, common_jvm_1.getCommonHttpHeaders)(index_1.NX_KTOR_PKG, url, options.proxyUrl)); const pluginLine = 'include(":ktor-server:ktor-server-plugins:ktor-server-'; return ((await response.text()) ?.split(/\r\n|\r|\n/) .filter((line) => line.trim().startsWith(pluginLine)) .map((plugin) => ({ name: plugin.replace(pluginLine, '').replace('")', ''), })) ?? []); } //# sourceMappingURL=ktor-utils.js.map