UNPKG

@jwpkg/gitversion

Version:

Gitversion is a complete customizable git-based release management system

189 lines 13.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.NodeProject = exports.NodeWorkspace = exports.isNodeManifest = void 0; exports.loadManifest = loadManifest; exports.persistManifest = persistManifest; const promises_1 = require("fs/promises"); const fs_1 = require("fs"); const glob_1 = require("glob"); const path_1 = require("path"); const t = __importStar(require("typanion")); const changelog_1 = require("../../../core/changelog"); const constants_1 = require("../../../core/constants"); exports.isNodeManifest = t.isPartial({ version: t.isOptional(t.isString()), name: t.isString(), private: t.isOptional(t.isBoolean()), workspaces: t.isOptional(t.isArray(t.isString())), }); const NODE_MANIFEST_NAME = 'package.json'; async function loadManifest(folder) { const manifestLocation = (0, path_1.join)(folder, NODE_MANIFEST_NAME); if (!(0, fs_1.existsSync)(manifestLocation)) { return null; } const stringContent = await (0, promises_1.readFile)(manifestLocation, 'utf-8'); const content = JSON.parse(stringContent); const errors = []; if ((0, exports.isNodeManifest)(content, { errors })) { return { eofInEnd: stringContent.endsWith('\n'), manifest: content, }; } return null; } async function persistManifest(folder, manifestContent) { let stringContent = JSON.stringify(manifestContent.manifest, null, 2); if (manifestContent.eofInEnd) { stringContent += '\n'; } await (0, promises_1.writeFile)((0, path_1.join)(folder, NODE_MANIFEST_NAME), stringContent, 'utf-8'); } class NodeWorkspace { _project; manifestContent; get manifest() { return this.manifestContent.manifest; } relativeCwd; get cwd() { return (0, path_1.join)(this.project.cwd, this.relativeCwd); } get version() { return this.manifest.version ?? constants_1.DEFAULT_PACKAGE_VERSION; } get private() { return this.manifest.private ?? false; } get config() { return this.project.config; } get packageName() { return this.manifest.name; } get project() { return this._project; } get tagPrefix() { if (this.config.options.independentVersioning) { return `${this.config.options.versionTagPrefix}${this.packageName}@`; } else { return this.config.options.versionTagPrefix; } } constructor(project, relativeCwd, manifestContent) { this.manifestContent = manifestContent; if (!this.manifest.name) { throw new Error(`Invalid manifest. Package at '${relativeCwd}' does not have a name`); } this.relativeCwd = relativeCwd; this._project = project; } async updateChangelog(entry) { const changeLogFile = (0, path_1.join)(this.cwd, 'CHANGELOG.md'); let changeLog = ''; if ((0, fs_1.existsSync)(changeLogFile)) { changeLog = await (0, promises_1.readFile)(changeLogFile, 'utf-8'); } changeLog = (0, changelog_1.addToChangelog)(entry, changeLog); await (0, promises_1.writeFile)(changeLogFile, changeLog, 'utf-8'); return changeLogFile; } async updateVersion(version) { const newManifest = { ...this.manifest, version, }; this.manifestContent.manifest = newManifest; await persistManifest(this.cwd, this.manifestContent); } } exports.NodeWorkspace = NodeWorkspace; class NodeProject extends NodeWorkspace { name = 'Node project'; _cwd; _config; get cwd() { return this._cwd; } get config() { return this._config; } childWorkspaces = []; get workspaces() { return [ this, ...this.childWorkspaces, ]; } get project() { return this; } static async initialize(initialize) { const manifestContent = await loadManifest(initialize.cwd); if (!manifestContent) { return null; } const project = new NodeProject(initialize.cwd, manifestContent, initialize); if (project.manifest.workspaces && Array.isArray(project.manifest.workspaces)) { const paths = await (0, glob_1.glob)(project.manifest.workspaces, { cwd: initialize.cwd, }); const workspacePromises = paths.map(async (path) => { const worspaceManifestContent = await loadManifest((0, path_1.join)(initialize.cwd, path)); if (worspaceManifestContent && worspaceManifestContent.manifest.private !== true) { return new NodeWorkspace(project, path, worspaceManifestContent); } else { return undefined; } }); const workspaces = await Promise.all(workspacePromises); project.childWorkspaces = workspaces.filter((w) => !!w); } return project; } constructor(cwd, manifestContent, config) { super(undefined, '.', manifestContent); this._project = this; this._cwd = cwd; this._config = config; } } exports.NodeProject = NodeProject; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvZW1iZWRkZWQvbm9kZS9ub2RlLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLG9DQWdCQztBQUVELDBDQU1DO0FBcERELDBDQUFrRDtBQUNsRCwyQkFBZ0M7QUFDaEMsK0JBQTRCO0FBQzVCLCtCQUE0QjtBQUM1Qiw0Q0FBOEI7QUFFOUIsdURBQXlFO0FBRXpFLHVEQUFrRTtBQUlyRCxRQUFBLGNBQWMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3hDLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNsQixPQUFPLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEMsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUNsRCxDQUFDLENBQUM7QUFTSCxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQztBQUVuQyxLQUFLLFVBQVUsWUFBWSxDQUFDLE1BQWM7SUFDL0MsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLFdBQUksRUFBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUMxRCxJQUFJLENBQUMsSUFBQSxlQUFVLEVBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBQSxtQkFBUSxFQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sT0FBTyxHQUFHLElB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