@jwpkg/gitversion
Version:
Gitversion is a complete customizable git-based release management system
189 lines • 13.1 kB
JavaScript
"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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