@jwpkg/gitversion
Version:
Gitversion is a complete customizable git-based release management system
85 lines • 6.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PackArtifact = void 0;
const promises_1 = require("fs/promises");
const fs_1 = require("fs");
const path_1 = require("path");
const MANIFEST_NAME = 'pack-manifest.json';
const PACK_FOLDER = 'pack';
class PackArtifact {
configuration;
git;
gitStatus;
packages;
get packFolder() {
return (0, path_1.join)(this.configuration.stagingFolder, PACK_FOLDER);
}
get packManifestFile() {
return (0, path_1.join)(this.packFolder, MANIFEST_NAME);
}
constructor(configuration, git, gitStatus, packages) {
this.configuration = configuration;
this.git = git;
this.gitStatus = gitStatus;
this.packages = packages ?? [];
}
validateGitStatusWithBump() {
return [this.gitStatus.postBump, this.gitStatus.preBump].includes(this.gitStatus.prePack);
}
validateGitStatusDuringPack() {
return this.gitStatus.prePack == this.gitStatus.postPack;
}
async validateGitStatusForPublish() {
return [
this.gitStatus.preBump,
this.gitStatus.postBump,
this.gitStatus.prePack,
this.gitStatus.postPack,
].includes(await this.git.gitStatusHash());
}
static async load(configuration, git) {
const packFolder = (0, path_1.join)(configuration.stagingFolder, PACK_FOLDER);
const manifestFile = (0, path_1.join)(packFolder, MANIFEST_NAME);
if ((0, fs_1.existsSync)(manifestFile)) {
const content = await (0, promises_1.readFile)(manifestFile, 'utf-8');
const manifest = JSON.parse(content);
return new PackArtifact(configuration, git, manifest.gitStatus, manifest.packages);
}
return null;
}
static async new(configuration, git, bumpGitStatus) {
const statusHash = await git.gitStatusHash();
const gitStatus = {
...bumpGitStatus,
prePack: statusHash,
postPack: 'INVALID',
};
await this.clear(configuration);
return new PackArtifact(configuration, git, gitStatus);
}
static async clear(configuration) {
await (0, promises_1.rm)((0, path_1.join)(configuration.stagingFolder, 'pack'), {
force: true,
recursive: true,
});
}
add(packedPackage) {
this.packages.push(packedPackage);
}
async persist() {
this.gitStatus.postPack = await this.git.gitStatusHash();
const content = {
gitStatus: this.gitStatus,
packages: this.packages,
};
const contentData = JSON.stringify(content, null, 2);
await (0, promises_1.mkdir)((0, path_1.dirname)(this.packManifestFile), {
recursive: true,
});
await (0, promises_1.writeFile)(this.packManifestFile, contentData, {
encoding: 'utf-8',
});
}
}
exports.PackArtifact = PackArtifact;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFjay1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BhY2stYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMENBQTZEO0FBQzdELDJCQUFnQztBQUNoQywrQkFBcUM7QUFRckMsTUFBTSxhQUFhLEdBQUcsb0JBQW9CLENBQUM7QUFDM0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDO0FBdUIzQixNQUFhLFlBQVk7SUFZSztJQUF1QztJQVhuRSxTQUFTLENBQXdCO0lBQ2pDLFFBQVEsQ0FBa0I7SUFFMUIsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFBLFdBQUksRUFBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFBLFdBQUksRUFBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUE0QixhQUE2QixFQUFVLEdBQVEsRUFBRSxTQUFnQyxFQUFFLFFBQTBCO1FBQTdHLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFDekUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxD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