UNPKG

@storm-software/k8s-tools

Version:

Tools for managing Kubernetes (k8s) infrastructure within a Nx workspace.

205 lines (186 loc) 8.26 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _chunkXJT7AOEUjs = require('./chunk-XJT7AOEU.js'); var _chunkHEVP2Q77js = require('./chunk-HEVP2Q77.js'); // src/plugins/docker/_dockerfile.ts var _devkit = require('@nx/devkit'); var _fs = require('fs'); var name = "storm-software/docker"; var description = "Plugin for parsing Dockerfile files"; var createNodesV2 = [ "*/**/{Dockerfile,Dockerfile.*}", async (configFiles, options, context) => { return await _devkit.createNodesFromFiles.call(void 0, async (dockerFilePath, options2 = { defaultEngine: "docker" }, context2) => { try { if (!dockerFilePath) { return {}; } const root = dockerFilePath.substring( dockerFilePath.lastIndexOf("/") + 1 ); const projectJsonPath = _devkit.joinPathFragments.call(void 0, root, "project.json"); if (!_fs.existsSync.call(void 0, projectJsonPath)) { return {}; } const projectJson = _devkit.readJsonFile.call(void 0, projectJsonPath); if (_optionalChain([projectJson, 'optionalAccess', _ => _.name])) { return {}; } const workspaceRoot = _chunkHEVP2Q77js.findWorkspaceRoot.call(void 0, ); const config = await _chunkHEVP2Q77js.getConfig.call(void 0, workspaceRoot); Object.keys(projectJson).forEach((key) => { if (!project[key]) { project[key] = projectJson[key]; } }); const project = { root, name: _optionalChain([projectJson, 'optionalAccess', _2 => _2.name]) }; const engine = _nullishCoalesce(options2.defaultEngine, () => ( "docker")); const labels = [ `org.opencontainers.image.ref.name=${project.name}`, `org.opencontainers.image.title=${titleCase(project.name)}`, `org.opencontainers.image.authors=${config.organization ? titleCase( typeof config.organization === "string" ? config.organization : config.organization.name ) : "Storm Software"}`, `org.opencontainers.image.vendor=${config.organization ? titleCase( typeof config.organization === "string" ? config.organization : config.organization.name ) : "Storm Software"}`, `org.opencontainers.image.documentation=${config.docs}`, `org.opencontainers.image.url=${config.homepage}`, `org.opencontainers.image.source=${config.repository}` ]; let tag = "latest"; const packageManager = _chunkXJT7AOEUjs.getPackageInfo.call(void 0, project); if (packageManager) { if (packageManager.type === "Cargo.toml") { tag = packageManager.content.package.version; labels.push( `org.opencontainers.image.description=${packageManager.content.package.description}` ); } else if (packageManager.type === "package.json") { tag = packageManager.content.version; labels.push( `org.opencontainers.image.description=${packageManager.content.description}` ); } } project.targets = { ...project.targets, container: { executor: "@nx-tools/nx-container:build", options: { file: dockerFilePath, engine, labels, push: true, platforms: ["linux/amd64"], metadata: { images: [ `${config.namespace ? config.namespace : "storm-software"}/${_optionalChain([project, 'access', _3 => _3.name, 'optionalAccess', _4 => _4.replace, 'call', _5 => _5(`${config.namespace}-`, "")])}`, `ghcr.io/${(typeof config.organization === "string" ? config.organization : _optionalChain([config, 'access', _6 => _6.organization, 'optionalAccess', _7 => _7.name])) || "storm-software"}/${project.name}` ], tags: [ "type=schedule", "type=ref,event=branch", "type=ref,event=tag", "type=ref,event=pr", "type=semver,pattern={{version}}", "type=semver,pattern={{major}}.{{minor}}", "type=semver,pattern={{major}}", "type=sha" ] } }, defaultConfiguration: "production", configurations: { development: { quiet: false, "build-args": [ "ENVIRONMENT=development", "DEBUG_IMAGE=true", `RELEASE=${tag}` ] }, production: { quiet: true, "build-args": [ "ENVIRONMENT=production", "DEBUG_IMAGE=false", `RELEASE=${tag}` ] } } } }; if ((_chunkXJT7AOEUjs.isEqualProjectTag.call(void 0, project, _chunkXJT7AOEUjs.ProjectTagConstants.ProjectType.TAG_ID, _chunkXJT7AOEUjs.ProjectTagConstants.ProjectType.APPLICATION ) || project.projectType === "application") && _chunkXJT7AOEUjs.hasProjectTag.call(void 0, project, _chunkXJT7AOEUjs.ProjectTagConstants.Registry.TAG_ID)) { if (project.targets["nx-release-publish"]) { project.targets["nx-release-publish"] = { ...project.targets["nx-release-publish"], executor: "@storm-software/k8s-tools:container-publish", options: { packageRoot: project.root } }; } else { project.targets["nx-release-publish"] = { cache: true, inputs: [ "linting", "testing", "documentation", "rust", "^production" ], dependsOn: ["build", "^nx-release-publish"], executor: "@storm-software/k8s-tools:container-publish", options: { packageRoot: project.root } }; } } _chunkXJT7AOEUjs.setDefaultProjectTags.call(void 0, project); const projects = {}; const externalNodes = {}; projects[project.root] = { ...project, release: { ...project.release, version: { ..._optionalChain([project, 'access', _8 => _8.release, 'optionalAccess', _9 => _9.version]), generator: "@storm-software/workspace-tools:release-version" } } }; return { projects, externalNodes }; } catch (e) { console.error(e); return {}; } }, configFiles, options, context ); } ]; var titleCase = (input) => { if (!input) { return ""; } return input.split(/(?=[A-Z])|[\.\-\s_]/).map((s) => s.trim()).filter((s) => !!s).map( (s) => s ? s.toLowerCase().charAt(0).toUpperCase() + s.toLowerCase().slice(1) : s ).join(" "); }; exports.name = name; exports.description = description; exports.createNodesV2 = createNodesV2;