release-please 14.17.4 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,30 @@
4
4
 
5
5
  [1]: https://www.npmjs.com/package/release-please?activeTab=versions
6
6
 
7
+ ## [15.0.0](https://github.com/googleapis/release-please/compare/v14.17.5...v15.0.0) (2022-12-12)
8
+
9
+
10
+ ### ⚠ BREAKING CHANGES
11
+
12
+ * Strategies can parse multiple releases from single release PR ([#1775](https://github.com/googleapis/release-please/issues/1775))
13
+ * Parse conventional commits in manifest ([#1772](https://github.com/googleapis/release-please/issues/1772))
14
+
15
+ ### Features
16
+
17
+ * Strategies can parse multiple releases from single release PR ([#1775](https://github.com/googleapis/release-please/issues/1775)) ([b565f85](https://github.com/googleapis/release-please/commit/b565f85b64a431be1d62f8e682c183c4c1f1c631))
18
+
19
+
20
+ ### Code Refactoring
21
+
22
+ * Parse conventional commits in manifest ([#1772](https://github.com/googleapis/release-please/issues/1772)) ([3391d3b](https://github.com/googleapis/release-please/commit/3391d3bc916ad07102bbb3873b93aeac6e13977c))
23
+
24
+ ## [14.17.5](https://github.com/googleapis/release-please/compare/v14.17.4...v14.17.5) (2022-12-08)
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * **expo:** Android version now correctly builds as a number ([#1770](https://github.com/googleapis/release-please/issues/1770)) ([d54483b](https://github.com/googleapis/release-please/commit/d54483be6d307aea75797f6a5bcfa6679b64088f))
30
+
7
31
  ## [14.17.4](https://github.com/googleapis/release-please/compare/v14.17.3...v14.17.4) (2022-12-01)
8
32
 
9
33
 
@@ -15,6 +15,7 @@
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.Manifest = exports.MANIFEST_PULL_REQUEST_TITLE_PATTERN = exports.SNOOZE_LABEL = exports.DEFAULT_SNAPSHOT_LABELS = exports.DEFAULT_RELEASE_LABELS = exports.DEFAULT_LABELS = exports.DEFAULT_COMPONENT_NAME = exports.ROOT_PROJECT_PATH = exports.DEFAULT_RELEASE_PLEASE_MANIFEST = exports.DEFAULT_RELEASE_PLEASE_CONFIG = void 0;
17
17
  const version_1 = require("./version");
18
+ const commit_1 = require("./commit");
18
19
  const logger_1 = require("./util/logger");
19
20
  const commit_split_1 = require("./util/commit-split");
20
21
  const tag_name_1 = require("./util/tag-name");
@@ -329,7 +330,7 @@ class Manifest {
329
330
  this.logger.info(`Building candidate release pull request for path: ${path}`);
330
331
  this.logger.debug(`type: ${config.releaseType}`);
331
332
  this.logger.debug(`targetBranch: ${this.targetBranch}`);
332
- let pathCommits = commitsPerPath[path];
333
+ let pathCommits = (0, commit_1.parseConventionalCommits)(commitsPerPath[path], this.logger);
333
334
  // The processCommits hook can be implemented by plugins to
334
335
  // post-process commits. This can be used to perform cleanup, e.g,, sentence
335
336
  // casing all commit messages:
@@ -579,7 +580,7 @@ class Manifest {
579
580
  const strategiesByPath = await this.getStrategiesByPath();
580
581
  // Find merged release pull requests
581
582
  const generator = await this.findMergedReleasePullRequests();
582
- const releases = [];
583
+ const candidateReleases = [];
583
584
  for await (const pullRequest of generator) {
584
585
  for (const path in this.repositoryConfig) {
585
586
  const config = this.repositoryConfig[path];
@@ -587,11 +588,11 @@ class Manifest {
587
588
  this.logger.debug(`type: ${config.releaseType}`);
588
589
  this.logger.debug(`targetBranch: ${this.targetBranch}`);
589
590
  const strategy = strategiesByPath[path];
590
- const release = await strategy.buildRelease(pullRequest, {
591
+ const releases = await strategy.buildReleases(pullRequest, {
591
592
  groupPullRequestTitlePattern: this.groupPullRequestTitlePattern,
592
593
  });
593
- if (release) {
594
- releases.push({
594
+ for (const release of releases) {
595
+ candidateReleases.push({
595
596
  ...release,
596
597
  path,
597
598
  pullRequest,
@@ -601,12 +602,9 @@ class Manifest {
601
602
  release.tag.version.major === 0),
602
603
  });
603
604
  }
604
- else {
605
- this.logger.info(`No release necessary for path: ${path}`);
606
- }
607
605
  }
608
606
  }
609
- return releases;
607
+ return candidateReleases;
610
608
  }
611
609
  /**
612
610
  * Find merged, untagged releases. For each release, create a GitHub release,
@@ -1,7 +1,7 @@
1
1
  import { GitHub } from './github';
2
2
  import { CandidateReleasePullRequest, RepositoryConfig } from './manifest';
3
3
  import { Strategy } from './strategy';
4
- import { Commit } from './commit';
4
+ import { Commit, ConventionalCommit } from './commit';
5
5
  import { Release } from './release';
6
6
  import { Logger } from './util/logger';
7
7
  /**
@@ -21,7 +21,7 @@ export declare abstract class ManifestPlugin {
21
21
  * @param {Commit[]} commits The set of commits that will feed into release pull request.
22
22
  * @returns {Commit[]} The modified commit objects.
23
23
  */
24
- processCommits(commits: Commit[]): Commit[];
24
+ processCommits(commits: ConventionalCommit[]): ConventionalCommit[];
25
25
  /**
26
26
  * Post-process candidate pull requests.
27
27
  * @param {CandidateReleasePullRequest[]} pullRequests Candidate pull requests
@@ -33,8 +33,6 @@ class ManifestPlugin {
33
33
  * @param {Commit[]} commits The set of commits that will feed into release pull request.
34
34
  * @returns {Commit[]} The modified commit objects.
35
35
  */
36
- // TODO: for next major version, let's run the default conventional commit parser earlier
37
- // (outside of the strategy classes) and pass in the ConventionalCommit[] objects in.
38
36
  processCommits(commits) {
39
37
  return commits;
40
38
  }
@@ -15,6 +15,7 @@
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.LinkedVersions = void 0;
17
17
  const plugin_1 = require("../plugin");
18
+ const commit_1 = require("../commit");
18
19
  const factory_1 = require("../factory");
19
20
  const merge_1 = require("./merge");
20
21
  /**
@@ -55,7 +56,7 @@ class LinkedVersions extends plugin_1.ManifestPlugin {
55
56
  for (const path in groupStrategies) {
56
57
  const strategy = groupStrategies[path];
57
58
  const latestRelease = releasesByPath[path];
58
- const releasePullRequest = await strategy.buildReleasePullRequest(commitsByPath[path], latestRelease);
59
+ const releasePullRequest = await strategy.buildReleasePullRequest((0, commit_1.parseConventionalCommits)(commitsByPath[path], this.logger), latestRelease);
59
60
  if (releasePullRequest === null || releasePullRequest === void 0 ? void 0 : releasePullRequest.version) {
60
61
  groupVersions[path] = releasePullRequest.version;
61
62
  }
@@ -1,7 +1,7 @@
1
1
  import { ManifestPlugin } from '../plugin';
2
2
  import { GitHub } from '../github';
3
3
  import { RepositoryConfig } from '../manifest';
4
- import { Commit } from '../commit';
4
+ import { ConventionalCommit } from '../commit';
5
5
  /**
6
6
  * This plugin converts commit messages to sentence case, for the benefit
7
7
  * of the generated CHANGELOG.
@@ -14,6 +14,6 @@ export declare class SentenceCase extends ManifestPlugin {
14
14
  * @param {Commit[]} commits The set of commits that will feed into release pull request.
15
15
  * @returns {Commit[]} The modified commit objects.
16
16
  */
17
- processCommits(commits: Commit[]): Commit[];
17
+ processCommits(commits: ConventionalCommit[]): ConventionalCommit[];
18
18
  toUpperCase(word: string): string;
19
19
  }
@@ -34,6 +34,9 @@ class SentenceCase extends plugin_1.ManifestPlugin {
34
34
  processCommits(commits) {
35
35
  this.logger.info(`SentenceCase processing ${commits.length} commits`);
36
36
  for (const commit of commits) {
37
+ // The parsed conventional commit message, without the type:
38
+ console.info(commit.bareMessage);
39
+ commit.bareMessage = this.toUpperCase(commit.bareMessage);
37
40
  // Check whether commit is in conventional commit format, if it is
38
41
  // we'll split the string by type and description:
39
42
  if (commit.message.includes(':')) {
@@ -112,7 +112,7 @@ export declare abstract class BaseStrategy implements Strategy {
112
112
  * open for this path/component. Returns undefined if we should not
113
113
  * open a pull request.
114
114
  */
115
- buildReleasePullRequest(commits: Commit[], latestRelease?: Release, draft?: boolean, labels?: string[]): Promise<ReleasePullRequest | undefined>;
115
+ buildReleasePullRequest(commits: ConventionalCommit[], latestRelease?: Release, draft?: boolean, labels?: string[]): Promise<ReleasePullRequest | undefined>;
116
116
  private extraFilePaths;
117
117
  protected extraFileUpdates(version: Version, versionsMap: VersionsMap): Promise<Update[]>;
118
118
  protected changelogEmpty(changelogEntry: string): boolean;
@@ -124,8 +124,15 @@ export declare abstract class BaseStrategy implements Strategy {
124
124
  * Given a merged pull request, build the candidate release.
125
125
  * @param {PullRequest} mergedPullRequest The merged release pull request.
126
126
  * @returns {Release} The candidate release.
127
+ * @deprecated Use buildReleases() instead.
127
128
  */
128
129
  buildRelease(mergedPullRequest: PullRequest, options?: BuildReleaseOptions): Promise<Release | undefined>;
130
+ /**
131
+ * Given a merged pull request, build the candidate releases.
132
+ * @param {PullRequest} mergedPullRequest The merged release pull request.
133
+ * @returns {Release} The candidate release.
134
+ */
135
+ buildReleases(mergedPullRequest: PullRequest, options?: BuildReleaseOptions): Promise<Release[]>;
129
136
  isPublishedVersion(_version: Version): boolean;
130
137
  /**
131
138
  * Override this to handle the initial version of a new library.
@@ -17,7 +17,6 @@ exports.BaseStrategy = void 0;
17
17
  const manifest_1 = require("../manifest");
18
18
  const default_1 = require("../versioning-strategies/default");
19
19
  const default_2 = require("../changelog-notes/default");
20
- const commit_1 = require("../commit");
21
20
  const version_1 = require("../version");
22
21
  const tag_name_1 = require("../util/tag-name");
23
22
  const logger_1 = require("../util/logger");
@@ -139,7 +138,7 @@ class BaseStrategy {
139
138
  * open a pull request.
140
139
  */
141
140
  async buildReleasePullRequest(commits, latestRelease, draft, labels = []) {
142
- const conventionalCommits = await this.postProcessCommits((0, commit_1.parseConventionalCommits)(commits, this.logger));
141
+ const conventionalCommits = await this.postProcessCommits(commits);
143
142
  this.logger.info(`Considering: ${conventionalCommits.length} commits`);
144
143
  if (conventionalCommits.length === 0) {
145
144
  this.logger.info(`No commits for path: ${this.path}, skipping`);
@@ -287,6 +286,7 @@ class BaseStrategy {
287
286
  * Given a merged pull request, build the candidate release.
288
287
  * @param {PullRequest} mergedPullRequest The merged release pull request.
289
288
  * @returns {Release} The candidate release.
289
+ * @deprecated Use buildReleases() instead.
290
290
  */
291
291
  async buildRelease(mergedPullRequest, options) {
292
292
  var _a;
@@ -365,6 +365,18 @@ class BaseStrategy {
365
365
  sha: mergedPullRequest.sha,
366
366
  };
367
367
  }
368
+ /**
369
+ * Given a merged pull request, build the candidate releases.
370
+ * @param {PullRequest} mergedPullRequest The merged release pull request.
371
+ * @returns {Release} The candidate release.
372
+ */
373
+ async buildReleases(mergedPullRequest, options) {
374
+ const release = await this.buildRelease(mergedPullRequest, options);
375
+ if (release) {
376
+ return [release];
377
+ }
378
+ return [];
379
+ }
368
380
  isPublishedVersion(_version) {
369
381
  return true;
370
382
  }
@@ -1,7 +1,7 @@
1
1
  import { Update } from '../update';
2
2
  import { Version } from '../version';
3
3
  import { BaseStrategy, BaseStrategyOptions, BuildUpdatesOptions } from './base';
4
- import { Commit } from '../commit';
4
+ import { ConventionalCommit } from '../commit';
5
5
  import { Release } from '../release';
6
6
  import { ReleasePullRequest } from '../release-pull-request';
7
7
  import { VersioningStrategy } from '../versioning-strategy';
@@ -18,9 +18,9 @@ export declare class Java extends BaseStrategy {
18
18
  protected readonly snapshotLabels: string[];
19
19
  readonly skipSnapshot: boolean;
20
20
  constructor(options: BaseStrategyOptions);
21
- buildReleasePullRequest(commits: Commit[], latestRelease?: Release, draft?: boolean, labels?: string[]): Promise<ReleasePullRequest | undefined>;
21
+ buildReleasePullRequest(commits: ConventionalCommit[], latestRelease?: Release, draft?: boolean, labels?: string[]): Promise<ReleasePullRequest | undefined>;
22
22
  protected buildSnapshotPullRequest(latestRelease?: Release, draft?: boolean, labels?: string[]): Promise<ReleasePullRequest>;
23
23
  isPublishedVersion(version: Version): boolean;
24
- protected needsSnapshot(commits: Commit[], latestRelease?: Release): Promise<boolean>;
24
+ protected needsSnapshot(commits: ConventionalCommit[], latestRelease?: Release): Promise<boolean>;
25
25
  protected buildUpdates(options: JavaBuildUpdatesOption): Promise<Update[]>;
26
26
  }
@@ -32,8 +32,15 @@ export interface Strategy {
32
32
  * Given a merged pull request, build the candidate release.
33
33
  * @param {PullRequest} mergedPullRequest The merged release pull request.
34
34
  * @returns {Release} The candidate release.
35
+ * @deprecated Use buildReleases() instead.
35
36
  */
36
37
  buildRelease(mergedPullRequest: PullRequest, options?: BuildReleaseOptions): Promise<Release | undefined>;
38
+ /**
39
+ * Given a merged pull request, build the candidate releases.
40
+ * @param {PullRequest} mergedPullRequest The merged release pull request.
41
+ * @returns {Release} The candidate release.
42
+ */
43
+ buildReleases(mergedPullRequest: PullRequest, options?: BuildReleaseOptions): Promise<Release[]>;
37
44
  /**
38
45
  * Return the component for this strategy. This may be a computed field.
39
46
  * @returns {string}
@@ -8,7 +8,7 @@ export interface AppJson {
8
8
  buildNumber?: string;
9
9
  };
10
10
  android?: {
11
- versionCode?: string;
11
+ versionCode?: number;
12
12
  };
13
13
  };
14
14
  }
@@ -58,7 +58,7 @@ class AppJson extends default_1.DefaultUpdater {
58
58
  this.version.minor * 100 +
59
59
  this.version.patch;
60
60
  logger.info(`updating Android version from ${parsed.expo.android.versionCode} to ${versionCode}`);
61
- parsed.expo.android.versionCode = versionCode.toString();
61
+ parsed.expo.android.versionCode = versionCode;
62
62
  }
63
63
  return (0, json_stringify_1.jsonStringify)(parsed, content);
64
64
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-please",
3
- "version": "14.17.4",
3
+ "version": "15.0.0",
4
4
  "description": "generate release PRs based on the conventionalcommits.org spec",
5
5
  "main": "./build/src/index.js",
6
6
  "bin": "./build/src/bin/release-please.js",