UNPKG

lerna

Version:

Lerna is a fast, modern build system for managing and publishing multiple JavaScript/TypeScript packages from the same repository

72 lines (69 loc) 1.82 kB
import { ValidationError, createGitHubClient, createGitLabClient, parseGitRepo } from "./chunk-WC2B4V4E.js"; // libs/commands/version/src/lib/create-release.ts import semver from "semver"; function truncateReleaseBody(body, type) { let maxReleaseBodyLength; switch (type) { case "gitlab": maxReleaseBodyLength = 1e6; break; case "github": maxReleaseBodyLength = 125e3; break; default: return body; } if (body.length > maxReleaseBodyLength) { const ellipsis = "..."; return body.slice(0, maxReleaseBodyLength - ellipsis.length) + ellipsis; } return body; } function createReleaseClient(type) { switch (type) { case "gitlab": return createGitLabClient(); case "github": return createGitHubClient(); /* istanbul ignore next: guarded by yargs.choices() */ default: throw new ValidationError("ERELEASE", "Invalid release client type"); } } function createRelease(client, { type, tags, releaseNotes, tagVersionSeparator }, { gitRemote, execOpts }) { const repo = parseGitRepo(gitRemote, execOpts); return Promise.all( releaseNotes.map(({ notes, name }) => { const tag = name === "fixed" ? tags[0] : tags.find((t) => t.startsWith(`${name}${tagVersionSeparator}`)); if (!tag) { return Promise.resolve(); } const prereleaseParts = semver.prerelease(tag.replace(`${name}${tagVersionSeparator}`, "")) || []; const body = truncateReleaseBody(notes, type); return client.repos.createRelease({ owner: repo.owner, repo: repo.name, tag_name: tag, name: tag, body, draft: false, prerelease: prereleaseParts.length > 0 }); }) ); } export { truncateReleaseBody, createReleaseClient, createRelease };