release-please 12.3.0 → 13.0.0-candidate.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.
Files changed (244) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +5 -0
  3. package/build/src/bin/release-please.d.ts +51 -11
  4. package/build/src/bin/release-please.js +409 -150
  5. package/build/src/bootstrapper.d.ts +12 -0
  6. package/build/src/bootstrapper.js +60 -0
  7. package/build/src/commit.d.ts +26 -0
  8. package/build/src/{util/to-conventional-changelog-format.js → commit.js} +97 -2
  9. package/build/src/errors/index.d.ts +0 -5
  10. package/build/src/errors/index.js +1 -10
  11. package/build/src/factory.d.ts +25 -37
  12. package/build/src/factory.js +159 -150
  13. package/build/src/github.d.ts +151 -883
  14. package/build/src/github.js +584 -1013
  15. package/build/src/manifest.d.ts +177 -48
  16. package/build/src/manifest.js +583 -487
  17. package/build/src/plugin.d.ts +20 -0
  18. package/build/src/{plugins/plugin.js → plugin.js} +10 -9
  19. package/build/src/plugins/cargo-workspace.d.ts +48 -18
  20. package/build/src/plugins/cargo-workspace.js +247 -328
  21. package/build/src/plugins/merge.d.ts +11 -0
  22. package/build/src/plugins/merge.js +83 -0
  23. package/build/src/plugins/node-workspace.d.ts +35 -17
  24. package/build/src/plugins/node-workspace.js +234 -271
  25. package/build/src/plugins/workspace.d.ts +102 -0
  26. package/build/src/plugins/workspace.js +170 -0
  27. package/build/src/pull-request.d.ts +10 -0
  28. package/build/src/{updaters/java/readme.js → pull-request.js} +2 -7
  29. package/build/src/release-notes.d.ts +29 -0
  30. package/build/src/release-notes.js +71 -0
  31. package/build/src/release-pull-request.d.ts +13 -0
  32. package/build/src/{updaters/java/pom-xml.js → release-pull-request.js} +2 -7
  33. package/build/src/release.d.ts +6 -0
  34. package/build/src/release.js +16 -0
  35. package/build/src/repository.d.ts +5 -0
  36. package/build/src/repository.js +16 -0
  37. package/build/src/strategies/dart.d.ts +8 -0
  38. package/build/src/strategies/dart.js +63 -0
  39. package/build/src/strategies/elixir.d.ts +5 -0
  40. package/build/src/{releasers → strategies}/elixir.js +18 -14
  41. package/build/src/strategies/go-yoshi.d.ts +13 -0
  42. package/build/src/strategies/go-yoshi.js +106 -0
  43. package/build/src/strategies/go.d.ts +5 -0
  44. package/build/src/{releasers → strategies}/go.js +11 -12
  45. package/build/src/strategies/helm.d.ts +8 -0
  46. package/build/src/strategies/helm.js +63 -0
  47. package/build/src/strategies/java-yoshi.d.ts +24 -0
  48. package/build/src/strategies/java-yoshi.js +203 -0
  49. package/build/src/strategies/krm-blueprint.d.ts +7 -0
  50. package/build/src/{releasers → strategies}/krm-blueprint.js +26 -22
  51. package/build/src/strategies/node.d.ts +9 -0
  52. package/build/src/strategies/node.js +82 -0
  53. package/build/src/strategies/ocaml.d.ts +5 -0
  54. package/build/src/{releasers → strategies}/ocaml.js +34 -28
  55. package/build/src/strategies/php-yoshi.d.ts +9 -0
  56. package/build/src/strategies/php-yoshi.js +214 -0
  57. package/build/src/strategies/php.d.ts +6 -0
  58. package/build/src/{releasers → strategies}/php.js +24 -23
  59. package/build/src/strategies/python.d.ts +8 -0
  60. package/build/src/strategies/python.js +117 -0
  61. package/build/src/strategies/ruby-yoshi.d.ts +17 -0
  62. package/build/src/strategies/ruby-yoshi.js +116 -0
  63. package/build/src/strategies/ruby.d.ts +13 -0
  64. package/build/src/{releasers → strategies}/ruby.js +26 -27
  65. package/build/src/strategies/rust.d.ts +20 -0
  66. package/build/src/strategies/rust.js +120 -0
  67. package/build/src/strategies/simple.d.ts +5 -0
  68. package/build/src/{releasers → strategies}/simple.js +18 -14
  69. package/build/src/strategies/terraform-module.d.ts +7 -0
  70. package/build/src/{releasers → strategies}/terraform-module.js +29 -23
  71. package/build/src/strategy.d.ts +99 -0
  72. package/build/src/strategy.js +237 -0
  73. package/build/src/update.d.ts +23 -0
  74. package/build/src/{updaters/update.js → update.js} +1 -1
  75. package/build/src/updaters/changelog.d.ts +7 -10
  76. package/build/src/updaters/changelog.js +3 -9
  77. package/build/src/updaters/changelog.js.map +1 -1
  78. package/build/src/updaters/composite.d.ts +19 -0
  79. package/build/src/updaters/composite.js +42 -0
  80. package/build/src/updaters/dart/pubspec-yaml.d.ts +12 -0
  81. package/build/src/updaters/dart/pubspec-yaml.js +45 -0
  82. package/build/src/updaters/default.d.ts +21 -0
  83. package/build/src/updaters/{version-txt.js → default.js} +16 -10
  84. package/build/src/updaters/dotnet/csproj.d.ts +12 -0
  85. package/build/src/updaters/{java/google-utils.js → dotnet/csproj.js} +16 -13
  86. package/build/src/updaters/elixir/elixir-mix-exs.d.ts +12 -0
  87. package/build/src/updaters/{elixir-mix-exs.js → elixir/elixir-mix-exs.js} +12 -10
  88. package/build/src/updaters/helm/chart-yaml.d.ts +10 -11
  89. package/build/src/updaters/helm/chart-yaml.js +12 -10
  90. package/build/src/updaters/java/java-update.d.ts +14 -0
  91. package/build/src/updaters/java/{java_update.js → java-update.js} +22 -22
  92. package/build/src/updaters/java/versions-manifest.d.ts +12 -2
  93. package/build/src/updaters/java/versions-manifest.js +20 -4
  94. package/build/src/updaters/krm/krm-blueprint-version.d.ts +10 -11
  95. package/build/src/updaters/krm/krm-blueprint-version.js +13 -12
  96. package/build/src/updaters/node/package-json.d.ts +12 -0
  97. package/build/src/updaters/{package-json.js → node/package-json.js} +14 -16
  98. package/build/src/updaters/node/package-lock-json.d.ts +8 -0
  99. package/build/src/updaters/node/package-lock-json.js +36 -0
  100. package/build/src/updaters/node/samples-package-json.d.ts +23 -0
  101. package/build/src/updaters/{samples-package-json.js → node/samples-package-json.js} +19 -8
  102. package/build/src/updaters/ocaml/dune-project.d.ts +10 -11
  103. package/build/src/updaters/ocaml/dune-project.js +11 -9
  104. package/build/src/updaters/ocaml/esy-json.d.ts +10 -11
  105. package/build/src/updaters/ocaml/esy-json.js +12 -10
  106. package/build/src/updaters/ocaml/opam.d.ts +10 -11
  107. package/build/src/updaters/ocaml/opam.js +11 -9
  108. package/build/src/updaters/php/php-client-version.d.ts +12 -0
  109. package/build/src/updaters/{php-client-version.js → php/php-client-version.js} +10 -9
  110. package/build/src/updaters/php/php-manifest.d.ts +13 -0
  111. package/build/src/updaters/{php-manifest.js → php/php-manifest.js} +17 -15
  112. package/build/src/updaters/php/root-composer-update-packages.d.ts +12 -0
  113. package/build/src/updaters/{root-composer-update-packages.js → php/root-composer-update-packages.js} +17 -16
  114. package/build/src/updaters/python/pyproject-toml.d.ts +10 -11
  115. package/build/src/updaters/python/pyproject-toml.js +13 -11
  116. package/build/src/updaters/python/python-file-with-version.d.ts +7 -11
  117. package/build/src/updaters/python/python-file-with-version.js +7 -8
  118. package/build/src/updaters/python/setup-cfg.d.ts +10 -11
  119. package/build/src/updaters/python/setup-cfg.js +10 -8
  120. package/build/src/updaters/python/setup-py.d.ts +10 -11
  121. package/build/src/updaters/python/setup-py.js +10 -8
  122. package/build/src/updaters/raw-content.d.ts +19 -0
  123. package/build/src/{plugins/index.js → updaters/raw-content.js} +23 -12
  124. package/build/src/updaters/release-please-config.d.ts +8 -0
  125. package/build/src/updaters/release-please-config.js +41 -0
  126. package/build/src/updaters/release-please-manifest.d.ts +2 -11
  127. package/build/src/updaters/release-please-manifest.js +11 -14
  128. package/build/src/updaters/ruby/version-rb.d.ts +12 -0
  129. package/build/src/updaters/{version-rb.js → ruby/version-rb.js} +10 -8
  130. package/build/src/updaters/rust/cargo-lock.d.ts +7 -11
  131. package/build/src/updaters/rust/cargo-lock.js +14 -16
  132. package/build/src/updaters/rust/cargo-toml.d.ts +7 -11
  133. package/build/src/updaters/rust/cargo-toml.js +19 -21
  134. package/build/src/updaters/terraform/module-version.d.ts +10 -11
  135. package/build/src/updaters/terraform/module-version.js +11 -9
  136. package/build/src/updaters/terraform/readme.d.ts +10 -11
  137. package/build/src/updaters/terraform/readme.js +11 -10
  138. package/build/src/updaters/terraform/readme.js.map +1 -1
  139. package/build/src/util/branch-name.d.ts +5 -4
  140. package/build/src/util/branch-name.js +13 -10
  141. package/build/src/{commit-split.d.ts → util/commit-split.d.ts} +2 -4
  142. package/build/src/{commit-split.js → util/commit-split.js} +4 -2
  143. package/build/src/util/indent-commit.d.ts +1 -1
  144. package/build/src/util/logger.d.ts +5 -2
  145. package/build/src/util/logger.js +9 -4
  146. package/build/src/util/pull-request-body.d.ts +20 -0
  147. package/build/src/util/pull-request-body.js +129 -0
  148. package/build/src/util/pull-request-title.d.ts +8 -6
  149. package/build/src/util/pull-request-title.js +20 -6
  150. package/build/src/util/tag-name.d.ts +9 -0
  151. package/build/src/util/tag-name.js +41 -0
  152. package/build/src/{updaters → util}/toml-edit.d.ts +0 -0
  153. package/build/src/{updaters → util}/toml-edit.js +0 -0
  154. package/build/src/version.d.ts +11 -0
  155. package/build/src/version.js +45 -0
  156. package/build/src/versioning-strategies/always-bump-patch.d.ts +7 -0
  157. package/build/src/{updaters/package-lock-json.js → versioning-strategies/always-bump-patch.js} +8 -11
  158. package/build/src/versioning-strategies/default.d.ts +15 -0
  159. package/build/src/versioning-strategies/default.js +67 -0
  160. package/build/src/versioning-strategies/dependency-manifest.d.ts +7 -0
  161. package/build/src/versioning-strategies/dependency-manifest.js +90 -0
  162. package/build/src/versioning-strategies/java-add-snapshot.d.ts +9 -0
  163. package/build/src/versioning-strategies/java-add-snapshot.js +53 -0
  164. package/build/src/versioning-strategies/java-snapshot.d.ts +9 -0
  165. package/build/src/versioning-strategies/java-snapshot.js +67 -0
  166. package/build/src/versioning-strategies/service-pack.d.ts +7 -0
  167. package/build/src/versioning-strategies/service-pack.js +40 -0
  168. package/build/src/versioning-strategy.d.ts +28 -0
  169. package/build/src/versioning-strategy.js +55 -0
  170. package/package.json +9 -8
  171. package/build/src/constants.d.ts +0 -6
  172. package/build/src/constants.js +0 -23
  173. package/build/src/conventional-commits.d.ts +0 -53
  174. package/build/src/conventional-commits.js +0 -167
  175. package/build/src/github-release.d.ts +0 -34
  176. package/build/src/github-release.js +0 -92
  177. package/build/src/graphql-to-commits.d.ts +0 -60
  178. package/build/src/graphql-to-commits.js +0 -112
  179. package/build/src/index.d.ts +0 -94
  180. package/build/src/index.js +0 -32
  181. package/build/src/plugins/index.d.ts +0 -5
  182. package/build/src/plugins/plugin.d.ts +0 -21
  183. package/build/src/release-pr.d.ts +0 -101
  184. package/build/src/release-pr.js +0 -461
  185. package/build/src/releasers/elixir.d.ts +0 -5
  186. package/build/src/releasers/go-yoshi.d.ts +0 -10
  187. package/build/src/releasers/go-yoshi.js +0 -162
  188. package/build/src/releasers/go.d.ts +0 -6
  189. package/build/src/releasers/helm.d.ts +0 -9
  190. package/build/src/releasers/helm.js +0 -66
  191. package/build/src/releasers/index.d.ts +0 -7
  192. package/build/src/releasers/index.js +0 -72
  193. package/build/src/releasers/java/bump_type.d.ts +0 -4
  194. package/build/src/releasers/java/bump_type.js +0 -38
  195. package/build/src/releasers/java/stability.d.ts +0 -5
  196. package/build/src/releasers/java/stability.js +0 -37
  197. package/build/src/releasers/java/version.d.ts +0 -13
  198. package/build/src/releasers/java/version.js +0 -112
  199. package/build/src/releasers/java-bom.d.ts +0 -16
  200. package/build/src/releasers/java-bom.js +0 -83
  201. package/build/src/releasers/java-lts.d.ts +0 -9
  202. package/build/src/releasers/java-lts.js +0 -47
  203. package/build/src/releasers/java-yoshi.d.ts +0 -28
  204. package/build/src/releasers/java-yoshi.js +0 -304
  205. package/build/src/releasers/krm-blueprint.d.ts +0 -6
  206. package/build/src/releasers/node.d.ts +0 -10
  207. package/build/src/releasers/node.js +0 -84
  208. package/build/src/releasers/ocaml.d.ts +0 -5
  209. package/build/src/releasers/php-yoshi.d.ts +0 -5
  210. package/build/src/releasers/php-yoshi.js +0 -191
  211. package/build/src/releasers/php.d.ts +0 -7
  212. package/build/src/releasers/python.d.ts +0 -11
  213. package/build/src/releasers/python.js +0 -127
  214. package/build/src/releasers/ruby-yoshi.d.ts +0 -5
  215. package/build/src/releasers/ruby-yoshi.js +0 -142
  216. package/build/src/releasers/ruby.d.ts +0 -11
  217. package/build/src/releasers/rust.d.ts +0 -30
  218. package/build/src/releasers/rust.js +0 -163
  219. package/build/src/releasers/simple.d.ts +0 -5
  220. package/build/src/releasers/terraform-module.d.ts +0 -6
  221. package/build/src/updaters/elixir-mix-exs.d.ts +0 -13
  222. package/build/src/updaters/java/google-utils.d.ts +0 -13
  223. package/build/src/updaters/java/java_update.d.ts +0 -13
  224. package/build/src/updaters/java/pom-xml.d.ts +0 -3
  225. package/build/src/updaters/java/readme.d.ts +0 -3
  226. package/build/src/updaters/java/readme.js.map +0 -1
  227. package/build/src/updaters/package-json.d.ts +0 -16
  228. package/build/src/updaters/package-lock-json.d.ts +0 -7
  229. package/build/src/updaters/php-client-version.d.ts +0 -13
  230. package/build/src/updaters/php-manifest.d.ts +0 -13
  231. package/build/src/updaters/root-composer-update-package.d.ts +0 -13
  232. package/build/src/updaters/root-composer-update-package.js +0 -45
  233. package/build/src/updaters/root-composer-update-packages.d.ts +0 -13
  234. package/build/src/updaters/samples-package-json.d.ts +0 -13
  235. package/build/src/updaters/update.d.ts +0 -20
  236. package/build/src/updaters/version-rb.d.ts +0 -13
  237. package/build/src/updaters/version-txt.d.ts +0 -12
  238. package/build/src/updaters/version.d.ts +0 -13
  239. package/build/src/updaters/version.js +0 -31
  240. package/build/src/util/checkpoint.d.ts +0 -6
  241. package/build/src/util/checkpoint.js +0 -33
  242. package/build/src/util/release-notes.d.ts +0 -7
  243. package/build/src/util/release-notes.js +0 -34
  244. package/build/src/util/to-conventional-changelog-format.d.ts +0 -2
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ // Copyright 2021 Google LLC
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.Bootstrapper = void 0;
17
+ const manifest_1 = require("./manifest");
18
+ const version_1 = require("./version");
19
+ const release_please_manifest_1 = require("./updaters/release-please-manifest");
20
+ const release_please_config_1 = require("./updaters/release-please-config");
21
+ class Bootstrapper {
22
+ constructor(github, targetBranch, manifestFile = manifest_1.DEFAULT_RELEASE_PLEASE_MANIFEST, configFile = manifest_1.DEFAULT_RELEASE_PLEASE_CONFIG, initialVersionString = '0.0.0') {
23
+ this.github = github;
24
+ this.targetBranch = targetBranch;
25
+ this.manifestFile = manifestFile;
26
+ this.configFile = configFile;
27
+ this.initialVersion = version_1.Version.parse(initialVersionString);
28
+ }
29
+ async bootstrap(path, config) {
30
+ const message = `chore: bootstrap releases for path: ${path}`;
31
+ const branchName = path === manifest_1.ROOT_PROJECT_PATH ? 'default' : path;
32
+ const pullRequest = {
33
+ headBranchName: `release-please/bootstrap/${branchName}`,
34
+ baseBranchName: this.targetBranch,
35
+ number: -1,
36
+ title: message,
37
+ body: `Configuring release-please for path: ${path}`,
38
+ labels: [],
39
+ files: [],
40
+ };
41
+ const version = this.initialVersion;
42
+ const versionsMap = new Map();
43
+ versionsMap.set(path, version);
44
+ const updates = [
45
+ {
46
+ path: this.manifestFile,
47
+ createIfMissing: true,
48
+ updater: new release_please_manifest_1.ReleasePleaseManifest({ version, versionsMap }),
49
+ },
50
+ {
51
+ path: this.configFile,
52
+ createIfMissing: true,
53
+ updater: new release_please_config_1.ReleasePleaseConfig(path, config),
54
+ },
55
+ ];
56
+ return await this.github.createPullRequest(pullRequest, this.targetBranch, message, updates, {});
57
+ }
58
+ }
59
+ exports.Bootstrapper = Bootstrapper;
60
+ //# sourceMappingURL=bootstrapper.js.map
@@ -0,0 +1,26 @@
1
+ import { PullRequest } from './pull-request';
2
+ import * as parser from '@conventional-commits/parser';
3
+ export interface Commit {
4
+ sha: string;
5
+ message: string;
6
+ files: string[];
7
+ pullRequest?: PullRequest;
8
+ }
9
+ export interface ConventionalCommit extends Commit {
10
+ type: string;
11
+ scope: string | null;
12
+ notes: parser.Note[];
13
+ references: parser.Reference[];
14
+ bareMessage: string;
15
+ breaking: boolean;
16
+ }
17
+ /**
18
+ * Given a list of raw commits, parse and expand into conventional commits.
19
+ *
20
+ * @param commits {Commit[]} The input commits
21
+ *
22
+ * @returns {ConventionalCommit[]} Parsed and expanded commits. There may be
23
+ * more commits returned as a single raw commit may contain multiple release
24
+ * messages.
25
+ */
26
+ export declare function parseConventionalCommits(commits: Commit[]): ConventionalCommit[];
@@ -13,12 +13,16 @@
13
13
  // See the License for the specific language governing permissions and
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.parseConventionalCommits = void 0;
16
17
  // eslint-disable-next-line @typescript-eslint/no-var-requires
17
18
  const visit = require('unist-util-visit');
18
19
  // eslint-disable-next-line @typescript-eslint/no-var-requires
19
20
  const visitWithAncestors = require('unist-util-visit-parents');
20
21
  const NUMBER_REGEX = /^[0-9]+$/;
22
+ const logger_1 = require("./util/logger");
21
23
  const parser = require("@conventional-commits/parser");
24
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
25
+ const conventionalCommitsFilter = require('conventional-commits-filter');
22
26
  function getBlankConventionalCommit() {
23
27
  return {
24
28
  body: '',
@@ -200,6 +204,15 @@ function toConventionalChangelogFormat(ast) {
200
204
  // Any footers that carry semantic meaning, e.g., Release-As, should
201
205
  // be added to the footer field, for the benefits of post-processing:
202
206
  if (semanticFooter) {
207
+ let releaseAs = '';
208
+ visit(parent, ['text'], (node) => {
209
+ releaseAs = node.value;
210
+ });
211
+ // record Release-As footer as a note
212
+ headerCommit.notes.push({
213
+ title: 'RELEASE AS',
214
+ text: releaseAs,
215
+ });
203
216
  if (!headerCommit.footer)
204
217
  headerCommit.footer = '';
205
218
  headerCommit.footer += `\n${footerText.toLowerCase()}`.trimStart();
@@ -217,5 +230,87 @@ function toConventionalChangelogFormat(ast) {
217
230
  commits.push(headerCommit);
218
231
  return commits;
219
232
  }
220
- exports.default = toConventionalChangelogFormat;
221
- //# sourceMappingURL=to-conventional-changelog-format.js.map
233
+ // TODO(@bcoe): now that we walk the actual AST of conventional commits
234
+ // we should be able to move post processing into
235
+ // to-conventional-changelog.ts.
236
+ function postProcessCommits(commit) {
237
+ commit.notes.forEach(note => {
238
+ let text = '';
239
+ let i = 0;
240
+ let extendedContext = false;
241
+ for (const chunk of note.text.split(/\r?\n/)) {
242
+ if (i > 0 && hasExtendedContext(chunk) && !extendedContext) {
243
+ text = `${text.trim()}\n`;
244
+ extendedContext = true;
245
+ }
246
+ if (chunk === '')
247
+ break;
248
+ else if (extendedContext) {
249
+ text += ` ${chunk}\n`;
250
+ }
251
+ else {
252
+ text += `${chunk} `;
253
+ }
254
+ i++;
255
+ }
256
+ note.text = text.trim();
257
+ });
258
+ return commit;
259
+ }
260
+ // If someone wishes to include additional contextual information for a
261
+ // BREAKING CHANGE using markdown, they can do so by starting the line after the initial
262
+ // breaking change description with either:
263
+ //
264
+ // 1. a fourth-level header.
265
+ // 2. a bulleted list (using either '*' or '-').
266
+ //
267
+ // BREAKING CHANGE: there were breaking changes
268
+ // #### Deleted Endpoints
269
+ // - endpoint 1
270
+ // - endpoint 2
271
+ function hasExtendedContext(line) {
272
+ if (line.match(/^#### |^[*-] /))
273
+ return true;
274
+ return false;
275
+ }
276
+ function parseCommits(message) {
277
+ return conventionalCommitsFilter(toConventionalChangelogFormat(parser.parser(message))).map(postProcessCommits);
278
+ }
279
+ /**
280
+ * Given a list of raw commits, parse and expand into conventional commits.
281
+ *
282
+ * @param commits {Commit[]} The input commits
283
+ *
284
+ * @returns {ConventionalCommit[]} Parsed and expanded commits. There may be
285
+ * more commits returned as a single raw commit may contain multiple release
286
+ * messages.
287
+ */
288
+ function parseConventionalCommits(commits) {
289
+ const conventionalCommits = [];
290
+ for (const commit of commits) {
291
+ try {
292
+ for (const parsedCommit of parseCommits(commit.message)) {
293
+ const breaking = parsedCommit.notes.filter(note => note.title === 'BREAKING CHANGE')
294
+ .length > 0;
295
+ conventionalCommits.push({
296
+ sha: commit.sha,
297
+ message: parsedCommit.header,
298
+ files: commit.files,
299
+ pullRequest: commit.pullRequest,
300
+ type: parsedCommit.type,
301
+ scope: parsedCommit.scope,
302
+ bareMessage: parsedCommit.subject,
303
+ notes: parsedCommit.notes,
304
+ references: parsedCommit.references,
305
+ breaking,
306
+ });
307
+ }
308
+ }
309
+ catch (_err) {
310
+ logger_1.logger.debug(`commit could not be parsed: ${commit.sha} ${commit.message.split('\n')[0]}`);
311
+ }
312
+ }
313
+ return conventionalCommits;
314
+ }
315
+ exports.parseConventionalCommits = parseConventionalCommits;
316
+ //# sourceMappingURL=commit.js.map
@@ -29,9 +29,4 @@ export declare class DuplicateReleaseError extends GitHubAPIError {
29
29
  tag: string;
30
30
  constructor(requestError: RequestError, tag: string);
31
31
  }
32
- export declare class MissingReleaseNotesError extends Error {
33
- changelogContents: string;
34
- version: string;
35
- constructor(changelogContents: string, version: string);
36
- }
37
32
  export {};
@@ -13,7 +13,7 @@
13
13
  // See the License for the specific language governing permissions and
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.MissingReleaseNotesError = exports.DuplicateReleaseError = exports.AuthError = exports.GitHubAPIError = exports.MissingRequiredFileError = exports.ConfigurationError = void 0;
16
+ exports.DuplicateReleaseError = exports.AuthError = exports.GitHubAPIError = exports.MissingRequiredFileError = exports.ConfigurationError = void 0;
17
17
  class ConfigurationError extends Error {
18
18
  constructor(message, releaserName, repository) {
19
19
  super(`${releaserName} (${repository}): ${message}`);
@@ -65,13 +65,4 @@ class DuplicateReleaseError extends GitHubAPIError {
65
65
  }
66
66
  }
67
67
  exports.DuplicateReleaseError = DuplicateReleaseError;
68
- class MissingReleaseNotesError extends Error {
69
- constructor(changelogContents, version) {
70
- super(`could not find changelog entry corresponding to release ${version}`);
71
- this.changelogContents = changelogContents;
72
- this.version = version;
73
- this.name = MissingReleaseNotesError.name;
74
- }
75
- }
76
- exports.MissingReleaseNotesError = MissingReleaseNotesError;
77
68
  //# sourceMappingURL=index.js.map
@@ -1,38 +1,26 @@
1
- import { ReleasePR } from './release-pr';
2
- import { GitHubRelease, GitHubReleaseResponse } from './github-release';
3
- import { ReleaseType } from './releasers';
4
- import { GitHub, GitHubTag } from './github';
5
- import { ManifestFactoryOptions, ReleasePRFactoryOptions, GitHubReleaseFactoryOptions, GitHubFactoryOptions } from '.';
6
- import { ManifestGitHubReleaseResult, Manifest } from './manifest';
7
- export declare type ManifestMethod = 'pullRequest' | 'githubRelease';
8
- export declare type ReleasePRMethod = 'run' | 'latestTag';
9
- export declare type GitHubReleaseMethod = 'run';
10
- export declare type Method = ManifestMethod | ReleasePRMethod | GitHubReleaseMethod;
11
- export declare type ManifestCommand = 'manifest-pr' | 'manifest-release';
12
- export declare type ReleasePRCommand = 'release-pr' | 'latest-tag';
13
- export declare type GitHubReleaseCommand = 'github-release';
14
- export declare type ManifestCallResult = Promise<number | undefined | ManifestGitHubReleaseResult>;
15
- export declare type ReleasePRCallResult = Promise<number | GitHubTag | undefined>;
16
- export declare type GitHubReleaseCallResult = Promise<GitHubReleaseResponse | undefined>;
17
- export declare type CallResult = ManifestCallResult | ReleasePRCallResult | GitHubReleaseCallResult;
18
- declare function runCommand(command: ManifestCommand, options: ManifestFactoryOptions): ManifestCallResult;
19
- declare function runCommand(command: ReleasePRCommand, options: ReleasePRFactoryOptions): ReleasePRCallResult;
20
- declare function runCommand(command: GitHubReleaseCommand, options: GitHubReleaseFactoryOptions): GitHubReleaseCallResult;
21
- declare function call(instance: Manifest, method: ManifestMethod): ManifestCallResult;
22
- declare function call(instance: ReleasePR, method: ReleasePRMethod): ReleasePRCallResult;
23
- declare function call(instance: GitHubRelease, method: GitHubReleaseMethod): GitHubReleaseCallResult;
24
- declare function manifest(options: ManifestFactoryOptions): Manifest;
25
- declare function githubRelease(options: GitHubReleaseFactoryOptions): GitHubRelease;
26
- declare function releasePR(options: ReleasePRFactoryOptions): ReleasePR;
27
- declare function gitHubInstance(options: GitHubFactoryOptions): GitHub;
28
- declare function releasePRClass(releaseType?: ReleaseType): typeof ReleasePR;
29
- export declare const factory: {
30
- gitHubInstance: typeof gitHubInstance;
31
- githubRelease: typeof githubRelease;
32
- manifest: typeof manifest;
33
- releasePR: typeof releasePR;
34
- releasePRClass: typeof releasePRClass;
35
- call: typeof call;
36
- runCommand: typeof runCommand;
37
- };
1
+ import { Strategy } from './strategy';
2
+ import { GitHub } from './github';
3
+ import { ReleaserConfig, PluginType, RepositoryConfig } from './manifest';
4
+ import { ManifestPlugin } from './plugin';
5
+ declare const allReleaseTypes: readonly ["dart", "elixir", "go", "go-yoshi", "helm", "java-backport", "java-bom", "java-lts", "java-yoshi", "krm-blueprint", "node", "ocaml", "php", "php-yoshi", "python", "ruby", "ruby-yoshi", "rust", "simple", "terraform-module"];
6
+ export declare type ReleaseType = typeof allReleaseTypes[number];
7
+ export declare function getReleaserTypes(): readonly ReleaseType[];
8
+ export declare function getVersioningStrategyTypes(): readonly VersioningStrategyType[];
9
+ export interface StrategyFactoryOptions extends ReleaserConfig {
10
+ github: GitHub;
11
+ path?: string;
12
+ targetBranch?: string;
13
+ }
14
+ export declare function buildStrategy(options: StrategyFactoryOptions): Promise<Strategy>;
15
+ declare const allVersioningTypes: readonly ["default", "always-bump-patch", "service-pack"];
16
+ export declare type VersioningStrategyType = typeof allVersioningTypes[number];
17
+ interface PluginFactoryOptions {
18
+ type: PluginType;
19
+ github: GitHub;
20
+ targetBranch: string;
21
+ repositoryConfig: RepositoryConfig;
22
+ alwaysLinkLocal?: boolean;
23
+ updateAllPackages?: boolean;
24
+ }
25
+ export declare function buildPlugin(options: PluginFactoryOptions): ManifestPlugin;
38
26
  export {};
@@ -13,170 +13,179 @@
13
13
  // See the License for the specific language governing permissions and
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.factory = void 0;
16
+ exports.buildPlugin = exports.buildStrategy = exports.getVersioningStrategyTypes = exports.getReleaserTypes = void 0;
17
+ const go_1 = require("./strategies/go");
18
+ const go_yoshi_1 = require("./strategies/go-yoshi");
19
+ const java_yoshi_1 = require("./strategies/java-yoshi");
20
+ const krm_blueprint_1 = require("./strategies/krm-blueprint");
21
+ const ocaml_1 = require("./strategies/ocaml");
22
+ const php_1 = require("./strategies/php");
23
+ const php_yoshi_1 = require("./strategies/php-yoshi");
24
+ const python_1 = require("./strategies/python");
25
+ const ruby_1 = require("./strategies/ruby");
26
+ const ruby_yoshi_1 = require("./strategies/ruby-yoshi");
27
+ const rust_1 = require("./strategies/rust");
28
+ const simple_1 = require("./strategies/simple");
29
+ const terraform_module_1 = require("./strategies/terraform-module");
30
+ const helm_1 = require("./strategies/helm");
31
+ const elixir_1 = require("./strategies/elixir");
32
+ const dart_1 = require("./strategies/dart");
33
+ const node_1 = require("./strategies/node");
34
+ const default_1 = require("./versioning-strategies/default");
35
+ const always_bump_patch_1 = require("./versioning-strategies/always-bump-patch");
36
+ const service_pack_1 = require("./versioning-strategies/service-pack");
37
+ const dependency_manifest_1 = require("./versioning-strategies/dependency-manifest");
38
+ const node_workspace_1 = require("./plugins/node-workspace");
39
+ const cargo_workspace_1 = require("./plugins/cargo-workspace");
17
40
  // Factory shared by GitHub Action and CLI for creating Release PRs
18
41
  // and GitHub Releases:
19
- const release_pr_1 = require("./release-pr");
20
- const github_release_1 = require("./github-release");
21
- const releasers_1 = require("./releasers");
22
- const github_1 = require("./github");
23
- const constants_1 = require("./constants");
24
- const manifest_1 = require("./manifest");
25
- // eslint-disable-next-line @typescript-eslint/no-var-requires
26
- const parseGithubRepoUrl = require('parse-github-repo-url');
27
- function isManifestCmd(cmdOpts) {
28
- const { command, options } = cmdOpts;
29
- return ((command === 'manifest-pr' || command === 'manifest-release') &&
30
- typeof options === 'object');
31
- }
32
- function isGitHubReleaseCmd(cmdOpts) {
33
- const { command, options } = cmdOpts;
34
- return command === 'github-release' && typeof options === 'object';
42
+ // add any new releasers you create to this type as well as the `releasers`
43
+ // object below.
44
+ const allReleaseTypes = [
45
+ 'dart',
46
+ 'elixir',
47
+ 'go',
48
+ 'go-yoshi',
49
+ 'helm',
50
+ 'java-backport',
51
+ 'java-bom',
52
+ 'java-lts',
53
+ 'java-yoshi',
54
+ 'krm-blueprint',
55
+ 'node',
56
+ 'ocaml',
57
+ 'php',
58
+ 'php-yoshi',
59
+ 'python',
60
+ 'ruby',
61
+ 'ruby-yoshi',
62
+ 'rust',
63
+ 'simple',
64
+ 'terraform-module',
65
+ ];
66
+ const releasers = {
67
+ go: options => new go_1.Go(options),
68
+ 'go-yoshi': options => new go_yoshi_1.GoYoshi(options),
69
+ 'krm-blueprint': options => new krm_blueprint_1.KRMBlueprint(options),
70
+ node: options => new node_1.Node(options),
71
+ ocaml: options => new ocaml_1.OCaml(options),
72
+ php: options => new php_1.PHP(options),
73
+ 'php-yoshi': options => new php_yoshi_1.PHPYoshi(options),
74
+ python: options => new python_1.Python(options),
75
+ rust: options => new rust_1.Rust(options),
76
+ simple: options => new simple_1.Simple(options),
77
+ 'terraform-module': options => new terraform_module_1.TerraformModule(options),
78
+ helm: options => new helm_1.Helm(options),
79
+ elixir: options => new elixir_1.Elixir(options),
80
+ dart: options => new dart_1.Dart(options),
81
+ };
82
+ function getReleaserTypes() {
83
+ return allReleaseTypes;
35
84
  }
36
- function isReleasePRCmd(cmdOpts) {
37
- const { command, options } = cmdOpts;
38
- return ((command === 'release-pr' || command === 'latest-tag') &&
39
- typeof options === 'object');
85
+ exports.getReleaserTypes = getReleaserTypes;
86
+ function getVersioningStrategyTypes() {
87
+ return allVersioningTypes;
40
88
  }
41
- function runCommand(command, options) {
42
- const errMsg = `Invalid command(${command}) with options(${JSON.stringify(options)})`;
43
- let result;
44
- const cmdOpts = { command, options };
45
- if (isManifestCmd(cmdOpts)) {
46
- const m = manifest(cmdOpts.options);
47
- if (cmdOpts.command === 'manifest-pr') {
48
- result = exports.factory.call(m, 'pullRequest');
89
+ exports.getVersioningStrategyTypes = getVersioningStrategyTypes;
90
+ async function buildStrategy(options) {
91
+ var _a;
92
+ const targetBranch = (_a = options.targetBranch) !== null && _a !== void 0 ? _a : options.github.repository.defaultBranch;
93
+ const versioningStrategy = buildVersioningStrategy({
94
+ type: options.versioning,
95
+ bumpMinorPreMajor: options.bumpMinorPreMajor,
96
+ bumpPatchForMinorPreMajor: options.bumpPatchForMinorPreMajor,
97
+ });
98
+ const strategyOptions = {
99
+ github: options.github,
100
+ targetBranch,
101
+ path: options.path,
102
+ bumpMinorPreMajor: options.bumpMinorPreMajor,
103
+ bumpPatchForMinorPreMajor: options.bumpPatchForMinorPreMajor,
104
+ component: options.component,
105
+ packageName: options.packageName,
106
+ changelogPath: options.changelogPath,
107
+ changelogSections: options.changelogSections,
108
+ versioningStrategy,
109
+ skipGitHubRelease: options.skipGithubRelease,
110
+ releaseAs: options.releaseAs,
111
+ };
112
+ switch (options.releaseType) {
113
+ case 'ruby': {
114
+ return new ruby_1.Ruby({
115
+ ...strategyOptions,
116
+ versionFile: options.versionFile,
117
+ });
49
118
  }
50
- else if (cmdOpts.command === 'manifest-release') {
51
- result = exports.factory.call(m, 'githubRelease');
119
+ case 'ruby-yoshi': {
120
+ return new ruby_yoshi_1.RubyYoshi({
121
+ ...strategyOptions,
122
+ versionFile: options.versionFile,
123
+ });
52
124
  }
53
- else {
54
- throw new Error(errMsg);
125
+ case 'java-yoshi': {
126
+ return new java_yoshi_1.JavaYoshi({
127
+ ...strategyOptions,
128
+ extraFiles: options.extraFiles,
129
+ });
55
130
  }
56
- }
57
- else if (isGitHubReleaseCmd(cmdOpts)) {
58
- result = exports.factory.call(githubRelease(cmdOpts.options), 'run');
59
- }
60
- else if (isReleasePRCmd(cmdOpts)) {
61
- const releasePr = releasePR(cmdOpts.options);
62
- if (cmdOpts.command === 'release-pr') {
63
- result = exports.factory.call(releasePr, 'run');
131
+ case 'java-backport': {
132
+ return new java_yoshi_1.JavaYoshi({
133
+ ...strategyOptions,
134
+ extraFiles: options.extraFiles,
135
+ versioningStrategy: new always_bump_patch_1.AlwaysBumpPatch(),
136
+ });
64
137
  }
65
- else if (cmdOpts.command === 'latest-tag') {
66
- result = exports.factory.call(releasePr, 'latestTag');
138
+ case 'java-bom': {
139
+ return new java_yoshi_1.JavaYoshi({
140
+ ...strategyOptions,
141
+ extraFiles: options.extraFiles,
142
+ versioningStrategy: new dependency_manifest_1.DependencyManifest({
143
+ bumpMinorPreMajor: options.bumpMinorPreMajor,
144
+ bumpPatchForMinorPreMajor: options.bumpPatchForMinorPreMajor,
145
+ }),
146
+ });
67
147
  }
68
- else {
69
- throw new Error(errMsg);
148
+ case 'java-lts': {
149
+ return new java_yoshi_1.JavaYoshi({
150
+ ...strategyOptions,
151
+ extraFiles: options.extraFiles,
152
+ versioningStrategy: new service_pack_1.ServicePackVersioningStrategy(),
153
+ });
154
+ }
155
+ default: {
156
+ const builder = releasers[options.releaseType];
157
+ if (builder) {
158
+ return builder(strategyOptions);
159
+ }
160
+ throw new Error(`Unknown release type: ${options.releaseType}`);
70
161
  }
71
162
  }
72
- else {
73
- throw new Error(errMsg);
74
- }
75
- return result;
76
163
  }
77
- function call(instance, method) {
78
- if (!(method in instance)) {
79
- throw new Error(`No such method(${method}) on ${instance.constructor.name}`);
80
- }
81
- let result;
82
- if (instance instanceof manifest_1.Manifest) {
83
- result = instance[method]();
84
- }
85
- else if (instance instanceof release_pr_1.ReleasePR) {
86
- result = instance[method]();
87
- }
88
- else if (instance instanceof github_release_1.GitHubRelease) {
89
- result = instance[method]();
90
- }
91
- else {
92
- throw new Error('Unknown instance.');
164
+ exports.buildStrategy = buildStrategy;
165
+ const allVersioningTypes = [
166
+ 'default',
167
+ 'always-bump-patch',
168
+ 'service-pack',
169
+ ];
170
+ function buildVersioningStrategy(options) {
171
+ switch (options.type) {
172
+ case 'always-bump-patch':
173
+ return new always_bump_patch_1.AlwaysBumpPatch(options);
174
+ case 'service-pack':
175
+ return new service_pack_1.ServicePackVersioningStrategy(options);
176
+ default:
177
+ return new default_1.DefaultVersioningStrategy(options);
93
178
  }
94
- return result;
95
179
  }
96
- function getLabels(label) {
97
- return label ? label.split(',') : constants_1.DEFAULT_LABELS;
98
- }
99
- function getGitHubFactoryOpts(options) {
100
- const { repoUrl, defaultBranch, fork, token, apiUrl, octokitAPIs, ...remaining } = options;
101
- return [
102
- {
103
- repoUrl,
104
- defaultBranch,
105
- fork,
106
- token,
107
- apiUrl,
108
- octokitAPIs,
109
- },
110
- remaining,
111
- ];
112
- }
113
- function manifest(options) {
114
- const [GHFactoryOptions, ManifestFactoryOptions] = getGitHubFactoryOpts(options);
115
- const github = gitHubInstance(GHFactoryOptions);
116
- return new manifest_1.Manifest({ github, ...ManifestFactoryOptions });
117
- }
118
- function githubRelease(options) {
119
- const [GHFactoryOptions, GHRAndRPFactoryOptions] = getGitHubFactoryOpts(options);
120
- const github = gitHubInstance(GHFactoryOptions);
121
- const { releaseType, label, path, packageName, bumpMinorPreMajor, releaseAs, snapshot, monorepoTags, changelogSections, changelogPath, lastPackageVersion, versionFile, ...GHRFactoryOptions } = GHRAndRPFactoryOptions;
122
- const labels = getLabels(label);
123
- const releasePR = new (releasePRClass(releaseType))({
124
- github,
125
- labels,
126
- path,
127
- packageName,
128
- bumpMinorPreMajor,
129
- releaseAs,
130
- snapshot,
131
- monorepoTags,
132
- changelogSections,
133
- changelogPath,
134
- lastPackageVersion,
135
- versionFile,
136
- });
137
- return new github_release_1.GitHubRelease({ github, releasePR, ...GHRFactoryOptions });
138
- }
139
- function releasePR(options) {
140
- const [GHFactoryOptions, RPFactoryOptions] = getGitHubFactoryOpts(options);
141
- const github = gitHubInstance(GHFactoryOptions);
142
- const { releaseType, label, latestTagName, latestTagSha, latestTagVersion, ...RPConstructorOptions } = RPFactoryOptions;
143
- let latestTag = undefined;
144
- if (latestTagName && latestTagSha && latestTagVersion) {
145
- latestTag = {
146
- name: latestTagName,
147
- sha: latestTagSha,
148
- version: latestTagVersion,
149
- };
180
+ function buildPlugin(options) {
181
+ switch (options.type) {
182
+ case 'cargo-workspace':
183
+ return new cargo_workspace_1.CargoWorkspace(options.github, options.targetBranch, options.repositoryConfig, options);
184
+ case 'node-workspace':
185
+ return new node_workspace_1.NodeWorkspace(options.github, options.targetBranch, options.repositoryConfig, options);
186
+ default:
187
+ throw new Error(`Unknown plugin type: ${options.type}`);
150
188
  }
151
- const labels = getLabels(label);
152
- return new (exports.factory.releasePRClass(releaseType))({
153
- github,
154
- labels,
155
- latestTag,
156
- ...RPConstructorOptions,
157
- });
158
- }
159
- function gitHubInstance(options) {
160
- const { repoUrl, ...remaining } = options;
161
- const [owner, repo] = parseGithubRepoUrl(repoUrl);
162
- return new github_1.GitHub({
163
- owner,
164
- repo,
165
- ...remaining,
166
- });
167
189
  }
168
- function releasePRClass(releaseType) {
169
- const releasers = releasers_1.getReleasers();
170
- const releaser = releaseType ? releasers[releaseType] : release_pr_1.ReleasePR;
171
- return releaser;
172
- }
173
- exports.factory = {
174
- gitHubInstance,
175
- githubRelease,
176
- manifest,
177
- releasePR,
178
- releasePRClass,
179
- call,
180
- runCommand,
181
- };
190
+ exports.buildPlugin = buildPlugin;
182
191
  //# sourceMappingURL=factory.js.map