From 075f3a1d1c6e67a8fddc73665da02b389de2141a Mon Sep 17 00:00:00 2001 From: Google GitHub Actions Bot <72759630+google-github-actions-bot@users.noreply.github.com> Date: Wed, 12 Jan 2022 18:32:29 -0500 Subject: [PATCH] chore: build dist release-please-action (#417) --- dist/index.js | 519 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 370 insertions(+), 149 deletions(-) diff --git a/dist/index.js b/dist/index.js index 36c462b..5b7b20b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -67548,6 +67548,7 @@ const allReleaseTypes = [ const releasers = { go: options => new go_1.Go(options), 'go-yoshi': options => new go_yoshi_1.GoYoshi(options), + 'java-yoshi': options => new java_yoshi_1.JavaYoshi(options), 'krm-blueprint': options => new krm_blueprint_1.KRMBlueprint(options), node: options => new node_1.Node(options), ocaml: options => new ocaml_1.OCaml(options), @@ -67555,7 +67556,6 @@ const releasers = { 'php-yoshi': options => new php_yoshi_1.PHPYoshi(options), python: options => new python_1.Python(options), rust: options => new rust_1.Rust(options), - simple: options => new simple_1.Simple(options), 'terraform-module': options => new terraform_module_1.TerraformModule(options), helm: options => new helm_1.Helm(options), elixir: options => new elixir_1.Elixir(options), @@ -67602,6 +67602,7 @@ async function buildStrategy(options) { includeComponentInTag: options.includeComponentInTag, changelogNotes, pullRequestTitlePattern: options.pullRequestTitlePattern, + extraFiles: options.extraFiles, }; switch (options.releaseType) { case 'ruby': { @@ -67616,23 +67617,15 @@ async function buildStrategy(options) { versionFile: options.versionFile, }); } - case 'java-yoshi': { - return new java_yoshi_1.JavaYoshi({ - ...strategyOptions, - extraFiles: options.extraFiles, - }); - } case 'java-backport': { return new java_yoshi_1.JavaYoshi({ ...strategyOptions, - extraFiles: options.extraFiles, versioningStrategy: new always_bump_patch_1.AlwaysBumpPatch(), }); } case 'java-bom': { return new java_yoshi_1.JavaYoshi({ ...strategyOptions, - extraFiles: options.extraFiles, versioningStrategy: new dependency_manifest_1.DependencyManifest({ bumpMinorPreMajor: options.bumpMinorPreMajor, bumpPatchForMinorPreMajor: options.bumpPatchForMinorPreMajor, @@ -67642,10 +67635,15 @@ async function buildStrategy(options) { case 'java-lts': { return new java_yoshi_1.JavaYoshi({ ...strategyOptions, - extraFiles: options.extraFiles, versioningStrategy: new service_pack_1.ServicePackVersioningStrategy(), }); } + case 'simple': { + return new simple_1.Simple({ + ...strategyOptions, + versionFile: options.versionFile, + }); + } default: { const builder = releasers[options.releaseType]; if (builder) { @@ -67997,18 +67995,20 @@ class GitHub { * Create a GitHub release * * @param {Release} release Release parameters - * @param {boolean} draft Whether or not to create the release as a draft + * @param {ReleaseOptions} options Release option parameters * @throws {DuplicateReleaseError} if the release tag already exists * @throws {GitHubAPIError} on other API errors */ this.createRelease = wrapAsync(async (release, options = {}) => { const resp = await this.octokit.repos.createRelease({ + name: release.name, owner: this.repository.owner, repo: this.repository.repo, tag_name: release.tag.toString(), body: release.notes, - sha: release.sha, draft: !!options.draft, + prerelease: !!options.prerelease, + target_commitish: release.sha, }); return { name: resp.data.name || undefined, @@ -68354,39 +68354,39 @@ class GitHub { logger_1.logger.debug(`Fetching ${states} pull requests on branch ${targetBranch} with cursor ${cursor}`); const response = await this.graphqlRequest({ query: `query mergedPullRequests($owner: String!, $repo: String!, $num: Int!, $maxFilesChanged: Int, $targetBranch: String!, $states: [PullRequestState!], $cursor: String) { - repository(owner: $owner, name: $repo) { - pullRequests(first: $num, after: $cursor, baseRefName: $targetBranch, states: $states, orderBy: {field: CREATED_AT, direction: DESC}) { - nodes { - number - title - baseRefName - headRefName - labels(first: 10) { - nodes { - name - } - } - body - mergeCommit { - oid - } - files(first: $maxFilesChanged) { - nodes { - path - } - pageInfo { - endCursor - hasNextPage - } + repository(owner: $owner, name: $repo) { + pullRequests(first: $num, after: $cursor, baseRefName: $targetBranch, states: $states, orderBy: {field: CREATED_AT, direction: DESC}) { + nodes { + number + title + baseRefName + headRefName + labels(first: 10) { + nodes { + name } } - pageInfo { - endCursor - hasNextPage + body + mergeCommit { + oid + } + files(first: $maxFilesChanged) { + nodes { + path + } + pageInfo { + endCursor + hasNextPage + } } } + pageInfo { + endCursor + hasNextPage + } } - }`, + } + }`, cursor, owner: this.repository.owner, repo: this.repository.repo, @@ -68923,6 +68923,7 @@ class Manifest { logger_1.logger.debug(`Found release for path ${path}, ${release.tagName}`); releaseShasByPath[path] = release.sha; releasesByPath[path] = { + name: release.name, tag: tagName, sha: release.sha, notes: release.notes || '', @@ -69179,6 +69180,9 @@ class Manifest { path, pullRequest, draft: (_a = config.draft) !== null && _a !== void 0 ? _a : this.draft, + prerelease: config.prerelease && + (!!release.tag.version.preRelease || + release.tag.version.major === 0), }); } } @@ -69228,6 +69232,7 @@ class Manifest { async createRelease(release) { const githubRelease = await this.github.createRelease(release, { draft: release.draft, + prerelease: release.prerelease, }); // comment on pull request const comment = `:robot: Release is at ${githubRelease.url} :sunflower:`; @@ -69293,6 +69298,7 @@ function extractReleaserConfig(config) { releaseAs: config['release-as'], skipGithubRelease: config['skip-github-release'], draft: config.draft, + prerelease: config.prerelease, draftPullRequest: config['draft-pull-request'], component: config['component'], packageName: config['package-name'], @@ -69436,7 +69442,7 @@ async function latestReleaseVersion(github, targetBranch, prefix, pullRequestTit return candidateTagVersion.sort((a, b) => b.compare(a))[0]; } function mergeReleaserConfig(defaultConfig, pathConfig) { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p; return { releaseType: (_b = (_a = pathConfig.releaseType) !== null && _a !== void 0 ? _a : defaultConfig.releaseType) !== null && _b !== void 0 ? _b : 'node', bumpMinorPreMajor: (_c = pathConfig.bumpMinorPreMajor) !== null && _c !== void 0 ? _c : defaultConfig.bumpMinorPreMajor, @@ -69446,10 +69452,11 @@ function mergeReleaserConfig(defaultConfig, pathConfig) { releaseAs: (_g = pathConfig.releaseAs) !== null && _g !== void 0 ? _g : defaultConfig.releaseAs, skipGithubRelease: (_h = pathConfig.skipGithubRelease) !== null && _h !== void 0 ? _h : defaultConfig.skipGithubRelease, draft: (_j = pathConfig.draft) !== null && _j !== void 0 ? _j : defaultConfig.draft, - component: (_k = pathConfig.component) !== null && _k !== void 0 ? _k : defaultConfig.component, - packageName: (_l = pathConfig.packageName) !== null && _l !== void 0 ? _l : defaultConfig.packageName, - versionFile: (_m = pathConfig.versionFile) !== null && _m !== void 0 ? _m : defaultConfig.versionFile, - extraFiles: (_o = pathConfig.extraFiles) !== null && _o !== void 0 ? _o : defaultConfig.extraFiles, + prerelease: (_k = pathConfig.prerelease) !== null && _k !== void 0 ? _k : defaultConfig.prerelease, + component: (_l = pathConfig.component) !== null && _l !== void 0 ? _l : defaultConfig.component, + packageName: (_m = pathConfig.packageName) !== null && _m !== void 0 ? _m : defaultConfig.packageName, + versionFile: (_o = pathConfig.versionFile) !== null && _o !== void 0 ? _o : defaultConfig.versionFile, + extraFiles: (_p = pathConfig.extraFiles) !== null && _p !== void 0 ? _p : defaultConfig.extraFiles, }; } /** @@ -69550,6 +69557,7 @@ const pull_request_title_1 = __nccwpck_require__(1158); const pull_request_body_1 = __nccwpck_require__(70774); const branch_name_1 = __nccwpck_require__(16344); const versioning_strategy_1 = __nccwpck_require__(41941); +const cargo_lock_1 = __nccwpck_require__(68875); /** * The plugin analyzed a cargo workspace and will bump dependencies * of managed packages if those dependencies are being updated. @@ -69574,7 +69582,9 @@ class CargoWorkspace extends workspace_1.WorkspacePlugin { } const allCrates = []; const candidatesByPackage = {}; - for (const path of cargoManifest.workspace.members) { + const members = cargoManifest.workspace.members; + members.push(manifest_1.ROOT_PROJECT_PATH); + for (const path of members) { const manifestPath = addPath(path, 'Cargo.toml'); logger_1.logger.info(`looking for candidate with path: ${path}`); const candidate = candidates.find(c => c.path === path); @@ -69584,7 +69594,8 @@ class CargoWorkspace extends workspace_1.WorkspacePlugin { const manifest = common_1.parseCargoManifest(manifestContent.parsedContent); const packageName = (_c = manifest.package) === null || _c === void 0 ? void 0 : _c.name; if (!packageName) { - throw new Error(`package manifest at ${manifestPath} is missing [package.name]`); + logger_1.logger.warn(`package manifest at ${manifestPath} is missing [package.name]`); + continue; } if (candidate) { candidatesByPackage[packageName] = candidate; @@ -69629,9 +69640,15 @@ class CargoWorkspace extends workspace_1.WorkspacePlugin { if (update.path === addPath(existingCandidate.path, 'Cargo.toml')) { update.updater = new raw_content_1.RawContent(updatedContent); } - else if (update.updater instanceof changelog_1.Changelog) { + else if (update.updater instanceof changelog_1.Changelog && dependencyNotes) { update.updater.changelogEntry = appendDependenciesSectionToChangelog(update.updater.changelogEntry, dependencyNotes); } + else if (update.path === addPath(existingCandidate.path, 'Cargo.lock')) { + update.updater = new cargo_lock_1.CargoLock({ + version, + versionsMap: updatedVersions, + }); + } return update; }); // append dependency notes @@ -69719,8 +69736,7 @@ class CargoWorkspace extends workspace_1.WorkspacePlugin { return graph; } inScope(candidate) { - return (candidate.config.releaseType === 'rust' && - candidate.path !== manifest_1.ROOT_PROJECT_PATH); + return candidate.config.releaseType === 'rust'; } packageNameFromPackage(pkg) { return pkg.name; @@ -69863,36 +69879,18 @@ class Merge extends plugin_1.ManifestPlugin { if (candidates.length < 1) { return candidates; } - const updatesByPath = {}; const releaseData = []; const labels = new Set(); + let rawUpdates = []; for (const candidate of candidates) { const pullRequest = candidate.pullRequest; - for (const update of pullRequest.updates) { - if (updatesByPath[update.path]) { - updatesByPath[update.path].push(update); - } - else { - updatesByPath[update.path] = [update]; - } - } + rawUpdates = rawUpdates.concat(...pullRequest.updates); for (const label of pullRequest.labels) { labels.add(label); } releaseData.push(...pullRequest.body.releaseData); } - const updates = []; - for (const path in updatesByPath) { - const update = updatesByPath[path]; - const updaters = update.map(u => u.updater); - updates.push({ - path, - createIfMissing: update[0].createIfMissing, - updater: updaters.length === 1 - ? updaters[0] - : new composite_1.CompositeUpdater(...updaters), - }); - } + const updates = composite_1.mergeUpdates(rawUpdates); const pullRequest = { title: pull_request_title_1.PullRequestTitle.ofTargetBranch(this.targetBranch, manifest_1.MANIFEST_PULL_REQUEST_TITLE_PATTERN), body: new pull_request_body_1.PullRequestBody(releaseData), @@ -70429,6 +70427,8 @@ const logger_1 = __nccwpck_require__(68809); const pull_request_title_1 = __nccwpck_require__(1158); const branch_name_1 = __nccwpck_require__(16344); const pull_request_body_1 = __nccwpck_require__(70774); +const composite_1 = __nccwpck_require__(40911); +const generic_1 = __nccwpck_require__(96323); const DEFAULT_CHANGELOG_PATH = 'CHANGELOG.md'; /** * A strategy is responsible for determining which files are @@ -70455,6 +70455,7 @@ class BaseStrategy { options.changelogNotes || new default_2.DefaultChangelogNotes(options); this.includeComponentInTag = (_a = options.includeComponentInTag) !== null && _a !== void 0 ? _a : true; this.pullRequestTitlePattern = options.pullRequestTitlePattern; + this.extraFiles = options.extraFiles || []; } /** * Return the component for this strategy. This may be a computed field. @@ -70498,6 +70499,15 @@ class BaseStrategy { changelogSections: this.changelogSections, }); } + async buildPullRequestBody(component, newVersion, releaseNotesBody, _conventionalCommits, _latestRelease) { + return new pull_request_body_1.PullRequestBody([ + { + component, + version: newVersion, + notes: releaseNotesBody, + }, + ]); + } /** * Builds a candidate release pull request * @param {Commit[]} commits Raw commits to consider for this release. @@ -70532,23 +70542,28 @@ class BaseStrategy { versionsMap, latestVersion: latestRelease === null || latestRelease === void 0 ? void 0 : latestRelease.tag.version, }); - const pullRequestBody = new pull_request_body_1.PullRequestBody([ - { - component, - version: newVersion, - notes: releaseNotesBody, - }, - ]); + const updatesWithExtras = composite_1.mergeUpdates(updates.concat(...this.extraFileUpdates(newVersion))); + const pullRequestBody = await this.buildPullRequestBody(component, newVersion, releaseNotesBody, conventionalCommits, latestRelease); return { title: pullRequestTitle, body: pullRequestBody, - updates, + updates: updatesWithExtras, labels, headRefName: branchName.toString(), version: newVersion, draft: draft !== null && draft !== void 0 ? draft : false, }; } + extraFileUpdates(version) { + const genericUpdater = new generic_1.Generic({ version }); + return this.extraFiles.map(path => { + return { + path, + createIfMissing: false, + updater: genericUpdater, + }; + }); + } changelogEmpty(changelogEntry) { return changelogEntry.split('\n').length <= 1; } @@ -70579,6 +70594,9 @@ class BaseStrategy { async buildVersionsMap(_conventionalCommits) { return new Map(); } + async parsePullRequestBody(pullRequestBody) { + return pull_request_body_1.PullRequestBody.parse(pullRequestBody); + } /** * Given a merged pull request, build the candidate release. * @param {PullRequest} mergedPullRequest The merged release pull request. @@ -70604,7 +70622,7 @@ class BaseStrategy { logger_1.logger.error(`Bad branch name: ${mergedPullRequest.headBranchName}`); return; } - const pullRequestBody = pull_request_body_1.PullRequestBody.parse(mergedPullRequest.body); + const pullRequestBody = await this.parsePullRequestBody(mergedPullRequest.body); if (!pullRequestBody) { logger_1.logger.error('Could not parse pull request body as a release PR'); return; @@ -70628,7 +70646,11 @@ class BaseStrategy { return; } const tag = new tag_name_1.TagName(version, this.includeComponentInTag ? component : undefined, this.tagSeparator); + const releaseName = component && this.includeComponentInTag + ? `${component}: v${version.toString()}` + : `v${version.toString()}`; return { + name: releaseName, tag, notes: notes || '', sha: mergedPullRequest.sha, @@ -71070,7 +71092,6 @@ class JavaYoshi extends base_1.BaseStrategy { const parentVersioningStrategy = options.versioningStrategy || new default_1.DefaultVersioningStrategy(); options.versioningStrategy = new java_snapshot_1.JavaSnapshot(parentVersioningStrategy); super(options); - this.extraFiles = options.extraFiles || []; this.snapshotVersioning = new java_add_snapshot_1.JavaAddSnapshot(parentVersioningStrategy); } async buildReleasePullRequest(commits, latestRelease, draft, labels = []) { @@ -71100,26 +71121,24 @@ class JavaYoshi extends base_1.BaseStrategy { const branchName = component ? branch_name_1.BranchName.ofComponentTargetBranch(component, this.targetBranch) : branch_name_1.BranchName.ofTargetBranch(this.targetBranch); + const notes = '### Updating meta-information for bleeding-edge SNAPSHOT release.'; const pullRequestBody = new pull_request_body_1.PullRequestBody([ { component, version: newVersion, - notes: '### Updating meta-information for bleeding-edge SNAPSHOT release.', + notes, }, ]); + const updates = await this.buildUpdates({ + newVersion, + versionsMap, + changelogEntry: notes, + isSnapshot: true, + }); return { title: pullRequestTitle, body: pullRequestBody, - updates: [ - { - path: this.addPath('versions.txt'), - createIfMissing: false, - updater: new versions_manifest_1.VersionsManifest({ - version: newVersion, - versionsMap, - }), - }, - ], + updates, labels: [], headRefName: branchName.toString(), version: newVersion, @@ -71171,6 +71190,7 @@ class JavaYoshi extends base_1.BaseStrategy { updater: new java_update_1.JavaUpdate({ version, versionsMap, + isSnapshot: options.isSnapshot, }), }); }); @@ -71182,6 +71202,7 @@ class JavaYoshi extends base_1.BaseStrategy { updater: new java_update_1.JavaUpdate({ version, versionsMap, + isSnapshot: options.isSnapshot, }), }); }); @@ -71193,6 +71214,7 @@ class JavaYoshi extends base_1.BaseStrategy { updater: new java_update_1.JavaUpdate({ version, versionsMap, + isSnapshot: options.isSnapshot, }), }); }); @@ -71203,17 +71225,20 @@ class JavaYoshi extends base_1.BaseStrategy { updater: new java_update_1.JavaUpdate({ version, versionsMap, + isSnapshot: options.isSnapshot, }), }); }); - updates.push({ - path: this.addPath(this.changelogPath), - createIfMissing: true, - updater: new changelog_1.Changelog({ - version, - changelogEntry: options.changelogEntry, - }), - }); + if (!options.isSnapshot) { + updates.push({ + path: this.addPath(this.changelogPath), + createIfMissing: true, + updater: new changelog_1.Changelog({ + version, + changelogEntry: options.changelogEntry, + }), + }); + } return updates; } async updateVersionsMap(versionsMap, conventionalCommits) { @@ -71675,6 +71700,23 @@ class PHPYoshi extends base_1.BaseStrategy { draft: draft !== null && draft !== void 0 ? draft : false, }; } + async parsePullRequestBody(pullRequestBody) { + const body = pull_request_body_1.PullRequestBody.parse(pullRequestBody); + if (!body) { + return undefined; + } + const component = await this.getComponent(); + const notes = body.releaseData + .map(release => { + var _a; + return `
${release.component}: ${(_a = release.version) === null || _a === void 0 ? void 0 : _a.toString()}\n\n${release.notes}\n
`; + }) + .join('\n\n'); + return new pull_request_body_1.PullRequestBody([{ component, notes }], { + footer: body.footer, + header: body.header, + }); + } async buildUpdates(options) { const updates = []; const version = options.newVersion; @@ -71972,6 +72014,7 @@ const fs_1 = __nccwpck_require__(35747); const path_1 = __nccwpck_require__(85622); const manifest_1 = __nccwpck_require__(31999); const logger_1 = __nccwpck_require__(68809); +const pull_request_body_1 = __nccwpck_require__(70774); const CHANGELOG_SECTIONS = [ { type: 'feat', section: 'Features' }, { type: 'fix', section: 'Bug Fixes' }, @@ -72027,10 +72070,9 @@ class RubyYoshi extends base_1.BaseStrategy { }); return commits; } - async buildReleaseNotes(conventionalCommits, newVersion, newVersionTag, latestRelease) { - const releaseNotes = await super.buildReleaseNotes(conventionalCommits, newVersion, newVersionTag, latestRelease); + async buildPullRequestBody(component, newVersion, releaseNotesBody, conventionalCommits, latestRelease) { if (!latestRelease) { - return releaseNotes; + return await super.buildPullRequestBody(component, newVersion, releaseNotesBody, conventionalCommits, latestRelease); } // summarize the commits that landed: let summary = '### Commits since last release:\n\n'; @@ -72062,7 +72104,15 @@ class RubyYoshi extends base_1.BaseStrategy { summary += `${file}\n`; }); summary += `\n[Compare Changes](https://github.com/${repoUrl}/compare/${latestRelease.sha}...HEAD)\n`; - return releaseNotes + `\n---\n${summary}`; + return new pull_request_body_1.PullRequestBody([ + { + component, + version: newVersion, + notes: releaseNotesBody, + }, + ], { + extra: summary, + }); } } exports.RubyYoshi = RubyYoshi; @@ -72169,6 +72219,7 @@ const base_1 = __nccwpck_require__(95081); const version_1 = __nccwpck_require__(17348); class Rust extends base_1.BaseStrategy { async buildUpdates(options) { + var _a, _b, _c; const updates = []; const version = options.newVersion; updates.push({ @@ -72179,30 +72230,62 @@ class Rust extends base_1.BaseStrategy { changelogEntry: options.changelogEntry, }), }); - const workspaceManifest = await this.getWorkspaceManifest(); - const manifestPaths = []; - let lockPath; - if (workspaceManifest && - workspaceManifest.workspace && - workspaceManifest.workspace.members) { + const workspaceManifest = await this.getPackageManifest(); + const versionsMap = new Map(); + if ((_a = workspaceManifest === null || workspaceManifest === void 0 ? void 0 : workspaceManifest.workspace) === null || _a === void 0 ? void 0 : _a.members) { const members = workspaceManifest.workspace.members; - logger_1.logger.info(`found workspace with ${members.length} members, upgrading all`); - for (const member of members) { - manifestPaths.push(`${member}/Cargo.toml`); + if ((_b = workspaceManifest.package) === null || _b === void 0 ? void 0 : _b.name) { + versionsMap.set(workspaceManifest.package.name, version); } - lockPath = 'Cargo.lock'; + else { + logger_1.logger.warn('No workspace manifest package name found'); + } + logger_1.logger.info(`found workspace with ${members.length} members, upgrading all`); + // Collect submodule names to update + const manifestsByPath = new Map(); + for (const member of members) { + const manifestPath = `${member}/Cargo.toml`; + const manifestContent = await this.getContent(manifestPath); + if (!manifestContent) { + logger_1.logger.warn(`member ${member} declared but did not find Cargo.toml`); + continue; + } + const manifest = common_1.parseCargoManifest(manifestContent.parsedContent); + manifestsByPath.set(manifestPath, manifestContent); + if (!((_c = manifest.package) === null || _c === void 0 ? void 0 : _c.name)) { + logger_1.logger.warn(`member ${member} has no package name`); + continue; + } + versionsMap.set(manifest.package.name, version); + } + logger_1.logger.info(`updating ${manifestsByPath.size} submodules`); + logger_1.logger.debug('versions map:', versionsMap); + for (const [manifestPath, manifestContent] of manifestsByPath) { + updates.push({ + path: this.addPath(manifestPath), + createIfMissing: false, + cachedFileContents: manifestContent, + updater: new cargo_toml_1.CargoToml({ + version, + versionsMap, + }), + }); + } + // Update root Cargo.toml + updates.push({ + path: this.addPath('Cargo.toml'), + createIfMissing: false, + updater: new cargo_toml_1.CargoToml({ + version, + versionsMap, + }), + }); } else { const manifestPath = this.addPath('Cargo.toml'); logger_1.logger.info(`single crate found, updating ${manifestPath}`); - manifestPaths.push(manifestPath); - lockPath = this.addPath('Cargo.lock'); - } - const versionsMap = new Map(); - versionsMap.set(this.component || '', version); - for (const path of manifestPaths) { updates.push({ - path, + path: manifestPath, createIfMissing: false, updater: new cargo_toml_1.CargoToml({ version, @@ -72211,7 +72294,7 @@ class Rust extends base_1.BaseStrategy { }); } updates.push({ - path: lockPath, + path: this.addPath('Cargo.lock'), createIfMissing: false, updater: new cargo_lock_1.CargoLock({ version, @@ -72236,28 +72319,21 @@ class Rust extends base_1.BaseStrategy { */ async getPackageManifest() { if (this.packageManifest === undefined) { - this.packageManifest = await this.getManifest(this.addPath('Cargo.toml')); + this.packageManifest = await this.getManifest('Cargo.toml'); } return this.packageManifest; } - /** - * @returns the workspace's manifest, ie. `Cargo.toml` (top-level) - */ - async getWorkspaceManifest() { - if (this.workspaceManifest === undefined) { - this.workspaceManifest = await this.getManifest('Cargo.toml'); - } - return this.workspaceManifest; - } - async getManifest(path) { - let content; + async getContent(path) { try { - content = await this.github.getFileContentsOnBranch(path, this.targetBranch); + return await this.github.getFileContentsOnBranch(this.addPath(path), this.targetBranch); } catch (e) { return null; } - return common_1.parseCargoManifest(content.parsedContent); + } + async getManifest(path) { + const content = await this.getContent(path); + return content ? common_1.parseCargoManifest(content.parsedContent) : null; } } exports.Rust = Rust; @@ -72291,6 +72367,11 @@ const changelog_1 = __nccwpck_require__(3325); const base_1 = __nccwpck_require__(95081); const default_1 = __nccwpck_require__(69995); class Simple extends base_1.BaseStrategy { + constructor(options) { + var _a; + super(options); + this.versionFile = (_a = options.versionFile) !== null && _a !== void 0 ? _a : 'version.txt'; + } async buildUpdates(options) { const updates = []; const version = options.newVersion; @@ -72303,7 +72384,7 @@ class Simple extends base_1.BaseStrategy { }), }); updates.push({ - path: this.addPath('version.txt'), + path: this.addPath(this.versionFile), createIfMissing: false, updater: new default_1.DefaultUpdater({ version, @@ -72465,7 +72546,7 @@ exports.Changelog = Changelog; // See the License for the specific language governing permissions and // limitations under the License. Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.CompositeUpdater = void 0; +exports.mergeUpdates = exports.CompositeUpdater = void 0; /** * The CompositeUpdater chains 0...n updaters and updates * the content in order. @@ -72491,6 +72572,29 @@ class CompositeUpdater { } } exports.CompositeUpdater = CompositeUpdater; +function mergeUpdates(updates) { + const updatesByPath = {}; + for (const update of updates) { + if (updatesByPath[update.path]) { + updatesByPath[update.path].push(update); + } + else { + updatesByPath[update.path] = [update]; + } + } + const newUpdates = []; + for (const path in updatesByPath) { + const update = updatesByPath[path]; + const updaters = update.map(u => u.updater); + newUpdates.push({ + path, + createIfMissing: update[0].createIfMissing, + updater: updaters.length === 1 ? updaters[0] : new CompositeUpdater(...updaters), + }); + } + return newUpdates; +} +exports.mergeUpdates = mergeUpdates; //# sourceMappingURL=composite.js.map /***/ }), @@ -72634,6 +72738,123 @@ exports.ElixirMixExs = ElixirMixExs; /***/ }), +/***/ 96323: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Generic = void 0; +const default_1 = __nccwpck_require__(69995); +const logger_1 = __nccwpck_require__(68809); +const VERSION_REGEX = /(?\d+)\.(?\d+)\.(?\d+)(-(?[\w.]+))?(\+(?[-\w.]+))?/; +const SINGLE_VERSION_REGEX = /\b\d+\b/; +const INLINE_UPDATE_REGEX = /x-release-please-(?major|minor|patch|version)/; +const BLOCK_START_REGEX = /x-release-please-start-(?major|minor|patch|version)/; +const BLOCK_END_REGEX = /x-release-please-end/; +/** + * The Generic updater looks for well known patterns and replaces + * content. The well known patterns are: + * + * 1. `x-release-please-version` if this string is found on the line, + * then replace a semver-looking string on that line with the next + * version + * 2. `x-release-please-major` if this string is found on the line, + * then replace an integer looking value with the the next version's + * major + * 3. `x-release-please-minor` if this string is found on the line, + * then replace an integer looking value with the the next version's + * minor + * 4. `x-release-please-patch` if this string is found on the line, + * then replace an integer looking value with the the next version's + * patch + * + * You can also use a block-based replacement. Content between the + * opening `x-release-please-start-version` and `x-release-please-end` will + * be considered for version replacement. You can also open these blocks + * with `x-release-please-start-` to replace single + * numbers + */ +class Generic extends default_1.DefaultUpdater { + /** + * Given initial file contents, return updated contents. + * @param {string} content The initial content + * @returns {string} The updated content + */ + updateContent(content) { + if (!content) { + return ''; + } + const newLines = []; + let blockScope; + function replaceVersion(line, scope, version) { + switch (scope) { + case 'major': + newLines.push(line.replace(SINGLE_VERSION_REGEX, `${version.major}`)); + return; + case 'minor': + newLines.push(line.replace(SINGLE_VERSION_REGEX, `${version.minor}`)); + return; + case 'patch': + newLines.push(line.replace(SINGLE_VERSION_REGEX, `${version.patch}`)); + return; + case 'version': + newLines.push(line.replace(VERSION_REGEX, version.toString())); + return; + default: + logger_1.logger.warn(`unknown block scope: ${scope}`); + newLines.push(line); + } + } + content.split(/\r?\n/).forEach(line => { + var _a, _b; + let match = line.match(INLINE_UPDATE_REGEX); + if (match) { + // replace inline versions + replaceVersion(line, (((_a = match.groups) === null || _a === void 0 ? void 0 : _a.scope) || 'version'), this.version); + } + else if (blockScope) { + // in a block, so try to replace versions + replaceVersion(line, blockScope, this.version); + if (line.match(BLOCK_END_REGEX)) { + blockScope = undefined; + } + } + else { + // look for block start line + match = line.match(BLOCK_START_REGEX); + if (match) { + if ((_b = match.groups) === null || _b === void 0 ? void 0 : _b.scope) { + blockScope = match.groups.scope; + } + else { + blockScope = 'version'; + } + } + newLines.push(line); + } + }); + return newLines.join('\n'); + } +} +exports.Generic = Generic; +//# sourceMappingURL=generic.js.map + +/***/ }), + /***/ 54988: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { @@ -72745,6 +72966,10 @@ const VERSION_REGEX = /\d+\.\d+\.\d+(-\w+(\.\d+)?)?(-SNAPSHOT)?/; * or with a `{x-version-update-start:}` and `{x-version-update-end}`. */ class JavaUpdate extends default_1.DefaultUpdater { + constructor(options) { + super(options); + this.isSnapshot = !!options.isSnapshot; + } /** * Given initial file contents, return updated contents. * @param {string} content The initial content @@ -72759,7 +72984,7 @@ class JavaUpdate extends default_1.DefaultUpdater { let blockPackageName = null; content.split(/\r?\n/).forEach(line => { let match = line.match(INLINE_UPDATE_REGEX); - if (match) { + if (match && (!this.isSnapshot || match[2] === 'current')) { const newVersion = this.versionsMap.get(match[1]); if (newVersion) { newLines.push(line.replace(VERSION_REGEX, newVersion.toString())); @@ -72782,7 +73007,7 @@ class JavaUpdate extends default_1.DefaultUpdater { } else { match = line.match(BLOCK_START_REGEX); - if (match) { + if (match && (!this.isSnapshot || match[2] === 'current')) { blockPackageName = match[1]; } newLines.push(line); @@ -73760,7 +73985,6 @@ class CargoToml extends default_1.DefaultUpdater { * @returns {string} The updated content */ updateContent(content) { - var _a; let payload = content; if (!this.versionsMap) { throw new Error('updateContent called with no versions'); @@ -73771,12 +73995,8 @@ class CargoToml extends default_1.DefaultUpdater { logger_1.logger.error(msg); throw new Error(msg); } + payload = toml_edit_1.replaceTomlValue(payload, ['package', 'version'], this.version.toString()); for (const [pkgName, pkgVersion] of this.versionsMap) { - if (parsed.package.name === pkgName) { - logger_1.logger.info(`updating own version from ${(_a = parsed.package) === null || _a === void 0 ? void 0 : _a.version} to ${pkgVersion}`); - payload = toml_edit_1.replaceTomlValue(payload, ['package', 'version'], pkgVersion.toString()); - continue; // to next [pkgName, pkgVersion] pair - } for (const depKind of common_1.DEP_KINDS) { const deps = parsed[depKind]; if (!deps) { @@ -74407,6 +74627,7 @@ class PullRequestBody { constructor(releaseData, options) { this.header = (options === null || options === void 0 ? void 0 : options.header) || DEFAULT_HEADER; this.footer = (options === null || options === void 0 ? void 0 : options.footer) || DEFAULT_FOOTER; + this.extra = options === null || options === void 0 ? void 0 : options.extra; this.releaseData = releaseData; } static parse(body) { @@ -74446,7 +74667,7 @@ ${NOTES_DELIMITER} ${notes} -${NOTES_DELIMITER} +${NOTES_DELIMITER}${this.extra ? `\n\n${this.extra}\n` : ''} ${this.footer}`; } } @@ -74470,7 +74691,7 @@ function splitBody(body) { content, }; } -const SUMMARY_PATTERN = /^(?.*): (?\d+\.\d+\.\d+.*)$/; +const SUMMARY_PATTERN = /^(?.*[^:]):? (?\d+\.\d+\.\d+.*)$/; function extractMultipleReleases(notes) { const data = []; const root = node_html_parser_1.parse(notes); @@ -89461,7 +89682,7 @@ module.exports = JSON.parse("{\"amp\":\"&\",\"apos\":\"'\",\"gt\":\">\",\"lt\":\ /***/ ((module) => { "use strict"; -module.exports = {"i8":"13.0.1"}; +module.exports = {"i8":"13.3.1"}; /***/ }),