@jwpkg/gitversion
Version:
Gitversion is a complete customizable git-based release management system
146 lines • 14.2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PackCommand = void 0;
const clipanion_1 = require("clipanion");
const colorize_node_1 = require("colorize-node");
const promises_1 = require("fs/promises");
const os_1 = require("os");
const path_1 = require("path");
const queue_promise_1 = __importDefault(require("queue-promise"));
const typanion_1 = require("typanion");
const application_1 = require("../core/application");
const bump_manifest_1 = require("../core/bump-manifest");
const format_utils_1 = require("../core/format-utils");
const pack_artifact_1 = require("../core/pack-artifact");
const context_1 = require("./context");
class PackCommand extends context_1.GitVersionCommand {
static paths = [
['pack'],
];
maxConcurrency = clipanion_1.Option.String('-m,--max-concurrency', {
validator: (0, typanion_1.cascade)((0, typanion_1.isNumber)(), (0, typanion_1.isAtLeast)(1)),
});
async execute() {
const application = await application_1.Application.init(this.context.application);
const { project, git, configuration, logger } = application;
if (!project) {
return 1;
}
const section = logger.beginSection('Pack step');
const bumpManifest = await bump_manifest_1.BumpManifest.load(application);
if (!bumpManifest) {
logger.reportError('No valid bump file found. Please run bump first');
return 1;
}
const packManifest = await pack_artifact_1.PackArtifact.new(configuration, git, bumpManifest.gitStatus);
if (!packManifest.validateGitStatusWithBump()) {
logger.reportWarning(`Git status has changed between ${colorize_node_1.colorize.blue('gitversion bump')} and ${colorize_node_1.colorize.blue('gitversion pack')}. This could be an error`, true);
}
if (bumpManifest.bumps.length > 0) {
const projectBump = bumpManifest.bumps.find(b => b.packageRelativeCwd === '.');
if (projectBump) {
packManifest.add(projectBump);
}
const packFolder = (0, path_1.join)(configuration.stagingFolder, 'pack');
await (0, promises_1.mkdir)(packFolder, {
recursive: true,
});
const queue = new queue_promise_1.default({
concurrent: this.maxConcurrency ?? (0, os_1.cpus)().length,
start: false,
});
bumpManifest.bumps.forEach(bump => {
queue.enqueue(async () => {
const workspace = project.workspaces.find(w => w.relativeCwd === bump.packageRelativeCwd);
if (workspace) {
await workspace.updateVersion(bump.version);
await workspace.updateChangelog(bump.changeLog);
await this.execPackCommand(application, workspace, bump, packManifest);
}
});
});
while (queue.shouldRun) {
await queue.dequeue();
}
}
else {
logger.reportWarning('Nothing to pack');
}
await packManifest.persist();
if (!packManifest.validateGitStatusDuringPack()) {
logger.reportWarning(`Git status has changed during ${colorize_node_1.colorize.blue('gitversion pack')} you should make sure your build artifacts (including gitversion.out) are correctly ignored in .gitignore`, true);
}
logger.endSection(section);
return 0;
}
async execPackCommand(application, workspace, bump, packManifest) {
return application.logger.runSection(`Packing ${(0, format_utils_1.formatPackageName)(bump.packageName)}`, async (logger) => {
try {
const packCommands = application.packManagers.map(async (packManager) => {
const folder = (0, path_1.join)(application.configuration.packFolder, packManager.ident);
await (0, promises_1.mkdir)(folder, {
recursive: true,
});
const packFile = await packManager.pack(workspace, folder);
if (packFile) {
if (Array.isArray(packFile)) {
for (const file of packFile) {
const fullName = (0, path_1.join)(folder, file);
const stats = await (0, promises_1.stat)(fullName);
logger.reportInfo(`Generated package: ./${(0, path_1.relative)(application.cwd, fullName)} (${(0, format_utils_1.formatFileSize)(stats.size)})`);
}
return {
[packManager.ident]: packFile,
};
}
if (typeof packFile === 'string') {
const fullName = (0, path_1.join)(folder, packFile);
const stats = await (0, promises_1.stat)(fullName);
logger.reportInfo(`Generated package: ./${(0, path_1.relative)(application.cwd, fullName)} (${(0, format_utils_1.formatFileSize)(stats.size)})`);
return {
[packManager.ident]: packFile,
};
}
else if (typeof packFile === 'object' && packFile !== null) {
// If packFile is an object, we assume it's a record of files
const files = {};
for (const [key, value] of Object.entries(packFile)) {
const fullName = (0, path_1.join)(folder, value);
const stats = await (0, promises_1.stat)(fullName);
logger.reportInfo(`Generated package: ./${(0, path_1.relative)(application.cwd, fullName)} (${(0, format_utils_1.formatFileSize)(stats.size)})`);
files[key] = value;
}
return {
[packManager.ident]: files,
};
}
else {
return {};
}
}
else {
return {};
}
});
const files = (await Promise.all(packCommands)).reduce((p, c) => {
return {
...p,
...c,
};
}, {});
packManifest.add({
packFiles: files,
...bump,
});
}
catch (error) {
logger.reportError(`Error during pack: ${colorize_node_1.colorize.redBright(`${error}`)}`);
}
});
}
}
exports.PackCommand = PackCommand;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9wYWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlDQUFtQztBQUNuQyxpREFBeUM7QUFDekMsMENBQTBDO0FBQzFDLDJCQUEwQjtBQUMxQiwrQkFBc0M7QUFDdEMsa0VBQWtDO0FBQ2xDLHVDQUF3RDtBQUV4RCxxREFBZ0U7QUFDaEUseURBQTJEO0FBQzNELHVEQUF5RTtBQUN6RSx5REFBcUQ7QUFHckQsdUNBQThDO0FBRTlDLE1BQWEsV0FBWSxTQUFRLDJCQUFpQjtJQUNoRCxNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsQ0FBQyxNQUFNLENBQUM7S0FDVCxDQUFDO0lBRUYsY0FBYyxHQUFHLGtCQUFNLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFO1FBQ3JELFNBQVMsRUFBRSxJQUFBLGtCQUFPLEVBQUMsSUFBQSxtQkFBUSxHQUFFLEVBQUUsSUFBQSxvQkFBUyxFQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzdDLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxXQUFXLEdBQUcsTUFBTSx5QkFBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUM7UUFDNUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRCxNQUFNLFlBQVksR0FBRyxNQUFNLDRCQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7WUFDdEUsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsTUFBTSw0QkFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RixJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsQ0FBQztZQUM5QyxNQUFNLENBQUMsYUFBYSxDQUFDLGtDQUFrQyx3QkFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLHdCQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25LLENBQUM7UUFFRCxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQy9FLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLElBQUEsV0FBSSxFQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDN0QsTUFBTSxJQUFBLGdCQUFLLEVBQUMsVUFBVSxFQUFFO2dCQUN0QixTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDLENBQUM7WUFFSCxNQUFNLEtBQUssR0FBRyxJQUFJLHVCQUFLLENBQUM7Z0JBQ3RCLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUEsU0FBSSxHQUFFLENBQUMsTUFBTTtnQkFDaEQsS0FBSyxFQUFFLEtBQUs7YUFDYixDQUFDLENBQUM7WUFFSCxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDaEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtvQkFDdkIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO29CQUMxRixJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNkLE1BQU0sU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQzVDLE1BQU0sU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ2hELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztvQkFDekUsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsTUFBTSxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFN0IsSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsRUFBRSxFQUFFLENBQUM7WUFDaEQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxpQ0FBaUMsd0JBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsMkdBQTJHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM00sQ0FBQztRQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0IsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUF5QixFQUFFLFNBQXFCLEVBQUUsSUFBVSxFQUFFLFlBQTBCO1FBQzVHLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxJQUFBLGdDQUFpQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBQyxNQUFNLEVBQUMsRUFBRTtZQUNwRyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLFdBQVcsRUFBQyxFQUFFO29CQUNwRSxNQUFNLE1BQU0sR0FBRyxJQUFBLFdBQUksRUFBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzdFLE1BQU0sSUFBQSxnQkFBSyxFQUFDLE1BQU0sRUFBRTt3QkFDbEIsU0FBUyxFQUFFLElBQUk7cUJBQ2hCLENBQUMsQ0FBQztvQkFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUMzRCxJQUFJLFFBQVEsRUFBRSxDQUFDO3dCQUNiLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDOzRCQUM1QixLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dDQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFBLFdBQUksRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0NBQ3BDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBQSxlQUFJLEVBQUMsUUFBUSxDQUFDLENBQUM7Z0NBQ25DLE1BQU0sQ0FBQyxVQUFVLENBQUMsd0JBQXdCLElBQUEsZUFBUSxFQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEtBQUssSUFBQSw2QkFBYyxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQ25ILENBQUM7NEJBQ0QsT0FBTztnQ0FDTCxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFROzZCQUM5QixDQUFDO3dCQUNKLENBQUM7d0JBQUMsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQzs0QkFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBQSxXQUFJLEVBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDOzRCQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsZUFBSSxFQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUNuQyxNQUFNLENBQUMsVUFBVSxDQUFDLHdCQUF3QixJQUFBLGVBQVEsRUFBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxLQUFLLElBQUEsNkJBQWMsRUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUNqSCxPQUFPO2dDQUNMLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVE7NkJBQzlCLENBQUM7d0JBQ0osQ0FBQzs2QkFBTSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7NEJBQzdELDZEQUE2RDs0QkFDN0QsTUFBTSxLQUFLLEdBQTJCLEVBQUUsQ0FBQzs0QkFDekMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQ0FDcEQsTUFBTSxRQUFRLEdBQUcsSUFBQSxXQUFJLEVBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dDQUNyQyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsZUFBSSxFQUFDLFFBQVEsQ0FBQyxDQUFDO2dDQUNuQyxNQUFNLENBQUMsVUFBVSxDQUFDLHdCQUF3QixJQUFBLGVBQVEsRUFBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxLQUFLLElBQUEsNkJBQWMsRUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dDQUNqSCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDOzRCQUNyQixDQUFDOzRCQUNELE9BQU87Z0NBQ0wsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSzs2QkFDM0IsQ0FBQzt3QkFDSixDQUFDOzZCQUFNLENBQUM7NEJBQ04sT0FBTyxFQUFFLENBQUM7d0JBQ1osQ0FBQztvQkFDSCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sT0FBTyxFQUFFLENBQUM7b0JBQ1osQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQTZELEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQzFILE9BQU87d0JBQ0wsR0FBRyxDQUFDO3dCQUNKLEdBQUcsQ0FBQztxQkFDTCxDQUFDO2dCQUNKLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFUCxZQUFZLENBQUMsR0FBRyxDQUFDO29CQUNmLFNBQVMsRUFBRSxLQUFLO29CQUNoQixHQUFHLElBQUk7aUJBQ1IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0Isd0JBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXhJSCxrQ0F5SUMifQ==