release-please 12.5.0 → 13.0.0-candidate.2

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 (253) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +4 -0
  3. package/build/src/bin/release-please.d.ts +55 -11
  4. package/build/src/bin/release-please.js +419 -152
  5. package/build/src/bootstrapper.d.ts +12 -0
  6. package/build/src/bootstrapper.js +60 -0
  7. package/build/src/changelog-notes/default.d.ts +17 -0
  8. package/build/src/changelog-notes/default.js +72 -0
  9. package/build/src/changelog-notes.d.ts +17 -0
  10. package/build/src/{updaters/java/readme.js → changelog-notes.js} +2 -7
  11. package/build/src/commit.d.ts +26 -0
  12. package/build/src/{util/to-conventional-changelog-format.js → commit.js} +97 -2
  13. package/build/src/errors/index.d.ts +0 -5
  14. package/build/src/errors/index.js +1 -10
  15. package/build/src/factory.d.ts +25 -37
  16. package/build/src/factory.js +160 -150
  17. package/build/src/github.d.ts +154 -884
  18. package/build/src/github.js +608 -1036
  19. package/build/src/manifest.d.ts +191 -47
  20. package/build/src/manifest.js +599 -487
  21. package/build/src/plugin.d.ts +20 -0
  22. package/build/src/{plugins/plugin.js → plugin.js} +10 -9
  23. package/build/src/plugins/cargo-workspace.d.ts +48 -18
  24. package/build/src/plugins/cargo-workspace.js +247 -328
  25. package/build/src/plugins/merge.d.ts +11 -0
  26. package/build/src/plugins/merge.js +83 -0
  27. package/build/src/plugins/node-workspace.d.ts +35 -17
  28. package/build/src/plugins/node-workspace.js +234 -271
  29. package/build/src/plugins/workspace.d.ts +102 -0
  30. package/build/src/plugins/workspace.js +170 -0
  31. package/build/src/pull-request.d.ts +10 -0
  32. package/build/src/{updaters/java/pom-xml.js → pull-request.js} +2 -7
  33. package/build/src/release-notes.d.ts +29 -0
  34. package/build/src/release-notes.js +71 -0
  35. package/build/src/release-pull-request.d.ts +13 -0
  36. package/build/src/release-pull-request.js +16 -0
  37. package/build/src/release.d.ts +6 -0
  38. package/build/src/release.js +16 -0
  39. package/build/src/repository.d.ts +5 -0
  40. package/build/src/repository.js +16 -0
  41. package/build/src/strategies/dart.d.ts +8 -0
  42. package/build/src/strategies/dart.js +63 -0
  43. package/build/src/strategies/elixir.d.ts +5 -0
  44. package/build/src/{releasers → strategies}/elixir.js +18 -14
  45. package/build/src/strategies/go-yoshi.d.ts +13 -0
  46. package/build/src/strategies/go-yoshi.js +106 -0
  47. package/build/src/strategies/go.d.ts +5 -0
  48. package/build/src/{releasers → strategies}/go.js +11 -12
  49. package/build/src/strategies/helm.d.ts +8 -0
  50. package/build/src/strategies/helm.js +63 -0
  51. package/build/src/strategies/java-yoshi.d.ts +24 -0
  52. package/build/src/strategies/java-yoshi.js +203 -0
  53. package/build/src/strategies/krm-blueprint.d.ts +7 -0
  54. package/build/src/{releasers → strategies}/krm-blueprint.js +26 -22
  55. package/build/src/strategies/node.d.ts +9 -0
  56. package/build/src/strategies/node.js +82 -0
  57. package/build/src/strategies/ocaml.d.ts +5 -0
  58. package/build/src/{releasers → strategies}/ocaml.js +34 -28
  59. package/build/src/strategies/php-yoshi.d.ts +10 -0
  60. package/build/src/strategies/php-yoshi.js +213 -0
  61. package/build/src/strategies/php.d.ts +6 -0
  62. package/build/src/{releasers → strategies}/php.js +24 -23
  63. package/build/src/strategies/python.d.ts +8 -0
  64. package/build/src/strategies/python.js +117 -0
  65. package/build/src/strategies/ruby-yoshi.d.ts +17 -0
  66. package/build/src/strategies/ruby-yoshi.js +116 -0
  67. package/build/src/strategies/ruby.d.ts +13 -0
  68. package/build/src/{releasers → strategies}/ruby.js +26 -27
  69. package/build/src/strategies/rust.d.ts +20 -0
  70. package/build/src/strategies/rust.js +120 -0
  71. package/build/src/strategies/simple.d.ts +5 -0
  72. package/build/src/{releasers → strategies}/simple.js +18 -14
  73. package/build/src/strategies/terraform-module.d.ts +7 -0
  74. package/build/src/{releasers → strategies}/terraform-module.js +29 -23
  75. package/build/src/strategy.d.ts +100 -0
  76. package/build/src/strategy.js +233 -0
  77. package/build/src/update.d.ts +23 -0
  78. package/build/src/{updaters/update.js → update.js} +1 -1
  79. package/build/src/updaters/changelog.d.ts +7 -10
  80. package/build/src/updaters/changelog.js +3 -9
  81. package/build/src/updaters/changelog.js.map +1 -1
  82. package/build/src/updaters/composite.d.ts +19 -0
  83. package/build/src/updaters/composite.js +42 -0
  84. package/build/src/updaters/dart/pubspec-yaml.d.ts +12 -0
  85. package/build/src/updaters/{pubspec-yaml.js → dart/pubspec-yaml.js} +13 -12
  86. package/build/src/updaters/default.d.ts +21 -0
  87. package/build/src/updaters/{version-txt.js → default.js} +16 -10
  88. package/build/src/updaters/dotnet/csproj.d.ts +12 -0
  89. package/build/src/updaters/{java/google-utils.js → dotnet/csproj.js} +16 -13
  90. package/build/src/updaters/elixir/elixir-mix-exs.d.ts +12 -0
  91. package/build/src/updaters/{elixir-mix-exs.js → elixir/elixir-mix-exs.js} +12 -10
  92. package/build/src/updaters/helm/chart-yaml.d.ts +10 -11
  93. package/build/src/updaters/helm/chart-yaml.js +12 -10
  94. package/build/src/updaters/java/java-update.d.ts +14 -0
  95. package/build/src/updaters/java/{java_update.js → java-update.js} +22 -22
  96. package/build/src/updaters/java/versions-manifest.d.ts +12 -2
  97. package/build/src/updaters/java/versions-manifest.js +20 -4
  98. package/build/src/updaters/krm/krm-blueprint-version.d.ts +10 -11
  99. package/build/src/updaters/krm/krm-blueprint-version.js +13 -12
  100. package/build/src/updaters/node/package-json.d.ts +12 -0
  101. package/build/src/updaters/{package-json.js → node/package-json.js} +14 -16
  102. package/build/src/updaters/node/package-lock-json.d.ts +8 -0
  103. package/build/src/updaters/node/package-lock-json.js +36 -0
  104. package/build/src/updaters/node/samples-package-json.d.ts +23 -0
  105. package/build/src/updaters/{samples-package-json.js → node/samples-package-json.js} +19 -8
  106. package/build/src/updaters/ocaml/dune-project.d.ts +10 -11
  107. package/build/src/updaters/ocaml/dune-project.js +11 -9
  108. package/build/src/updaters/ocaml/esy-json.d.ts +10 -11
  109. package/build/src/updaters/ocaml/esy-json.js +12 -10
  110. package/build/src/updaters/ocaml/opam.d.ts +10 -11
  111. package/build/src/updaters/ocaml/opam.js +11 -9
  112. package/build/src/updaters/php/php-client-version.d.ts +12 -0
  113. package/build/src/updaters/{php-client-version.js → php/php-client-version.js} +10 -9
  114. package/build/src/updaters/php/php-manifest.d.ts +13 -0
  115. package/build/src/updaters/{php-manifest.js → php/php-manifest.js} +17 -15
  116. package/build/src/updaters/php/root-composer-update-packages.d.ts +12 -0
  117. package/build/src/updaters/{root-composer-update-packages.js → php/root-composer-update-packages.js} +17 -16
  118. package/build/src/updaters/python/pyproject-toml.d.ts +10 -11
  119. package/build/src/updaters/python/pyproject-toml.js +13 -11
  120. package/build/src/updaters/python/python-file-with-version.d.ts +7 -11
  121. package/build/src/updaters/python/python-file-with-version.js +7 -8
  122. package/build/src/updaters/python/setup-cfg.d.ts +10 -11
  123. package/build/src/updaters/python/setup-cfg.js +10 -8
  124. package/build/src/updaters/python/setup-py.d.ts +10 -11
  125. package/build/src/updaters/python/setup-py.js +10 -8
  126. package/build/src/updaters/raw-content.d.ts +19 -0
  127. package/build/src/{plugins/index.js → updaters/raw-content.js} +23 -12
  128. package/build/src/updaters/release-please-config.d.ts +8 -0
  129. package/build/src/updaters/release-please-config.js +41 -0
  130. package/build/src/updaters/release-please-manifest.d.ts +2 -11
  131. package/build/src/updaters/release-please-manifest.js +11 -14
  132. package/build/src/updaters/ruby/version-rb.d.ts +12 -0
  133. package/build/src/updaters/{version-rb.js → ruby/version-rb.js} +10 -8
  134. package/build/src/updaters/rust/cargo-lock.d.ts +7 -11
  135. package/build/src/updaters/rust/cargo-lock.js +14 -16
  136. package/build/src/updaters/rust/cargo-toml.d.ts +7 -11
  137. package/build/src/updaters/rust/cargo-toml.js +19 -21
  138. package/build/src/updaters/terraform/module-version.d.ts +10 -11
  139. package/build/src/updaters/terraform/module-version.js +11 -9
  140. package/build/src/updaters/terraform/readme.d.ts +10 -11
  141. package/build/src/updaters/terraform/readme.js +11 -10
  142. package/build/src/updaters/terraform/readme.js.map +1 -1
  143. package/build/src/util/branch-name.d.ts +5 -4
  144. package/build/src/util/branch-name.js +13 -10
  145. package/build/src/{commit-split.d.ts → util/commit-split.d.ts} +2 -4
  146. package/build/src/{commit-split.js → util/commit-split.js} +4 -2
  147. package/build/src/util/indent-commit.d.ts +1 -1
  148. package/build/src/util/logger.d.ts +5 -2
  149. package/build/src/util/logger.js +9 -4
  150. package/build/src/util/pull-request-body.d.ts +20 -0
  151. package/build/src/util/pull-request-body.js +129 -0
  152. package/build/src/util/pull-request-title.d.ts +8 -6
  153. package/build/src/util/pull-request-title.js +20 -6
  154. package/build/src/util/tag-name.d.ts +9 -0
  155. package/build/src/util/tag-name.js +41 -0
  156. package/build/src/{updaters → util}/toml-edit.d.ts +0 -0
  157. package/build/src/{updaters → util}/toml-edit.js +0 -0
  158. package/build/src/version.d.ts +11 -0
  159. package/build/src/version.js +45 -0
  160. package/build/src/versioning-strategies/always-bump-patch.d.ts +7 -0
  161. package/build/src/{updaters/package-lock-json.js → versioning-strategies/always-bump-patch.js} +8 -11
  162. package/build/src/versioning-strategies/default.d.ts +15 -0
  163. package/build/src/versioning-strategies/default.js +67 -0
  164. package/build/src/versioning-strategies/dependency-manifest.d.ts +7 -0
  165. package/build/src/versioning-strategies/dependency-manifest.js +90 -0
  166. package/build/src/versioning-strategies/java-add-snapshot.d.ts +9 -0
  167. package/build/src/versioning-strategies/java-add-snapshot.js +53 -0
  168. package/build/src/versioning-strategies/java-snapshot.d.ts +9 -0
  169. package/build/src/versioning-strategies/java-snapshot.js +67 -0
  170. package/build/src/versioning-strategies/service-pack.d.ts +7 -0
  171. package/build/src/versioning-strategies/service-pack.js +40 -0
  172. package/build/src/versioning-strategy.d.ts +28 -0
  173. package/build/src/versioning-strategy.js +55 -0
  174. package/package.json +9 -8
  175. package/build/src/constants.d.ts +0 -6
  176. package/build/src/constants.js +0 -23
  177. package/build/src/conventional-commits.d.ts +0 -53
  178. package/build/src/conventional-commits.js +0 -167
  179. package/build/src/github-release.d.ts +0 -34
  180. package/build/src/github-release.js +0 -92
  181. package/build/src/graphql-to-commits.d.ts +0 -60
  182. package/build/src/graphql-to-commits.js +0 -112
  183. package/build/src/index.d.ts +0 -94
  184. package/build/src/index.js +0 -32
  185. package/build/src/plugins/index.d.ts +0 -5
  186. package/build/src/plugins/plugin.d.ts +0 -21
  187. package/build/src/release-pr.d.ts +0 -101
  188. package/build/src/release-pr.js +0 -461
  189. package/build/src/releasers/dart.d.ts +0 -9
  190. package/build/src/releasers/dart.js +0 -65
  191. package/build/src/releasers/elixir.d.ts +0 -5
  192. package/build/src/releasers/go-yoshi.d.ts +0 -10
  193. package/build/src/releasers/go-yoshi.js +0 -162
  194. package/build/src/releasers/go.d.ts +0 -6
  195. package/build/src/releasers/helm.d.ts +0 -9
  196. package/build/src/releasers/helm.js +0 -66
  197. package/build/src/releasers/index.d.ts +0 -7
  198. package/build/src/releasers/index.js +0 -76
  199. package/build/src/releasers/java/bump_type.d.ts +0 -4
  200. package/build/src/releasers/java/bump_type.js +0 -38
  201. package/build/src/releasers/java/stability.d.ts +0 -5
  202. package/build/src/releasers/java/stability.js +0 -37
  203. package/build/src/releasers/java/version.d.ts +0 -13
  204. package/build/src/releasers/java/version.js +0 -112
  205. package/build/src/releasers/java-backport.d.ts +0 -9
  206. package/build/src/releasers/java-backport.js +0 -43
  207. package/build/src/releasers/java-bom.d.ts +0 -16
  208. package/build/src/releasers/java-bom.js +0 -83
  209. package/build/src/releasers/java-lts.d.ts +0 -9
  210. package/build/src/releasers/java-lts.js +0 -47
  211. package/build/src/releasers/java-yoshi.d.ts +0 -28
  212. package/build/src/releasers/java-yoshi.js +0 -304
  213. package/build/src/releasers/krm-blueprint.d.ts +0 -6
  214. package/build/src/releasers/node.d.ts +0 -10
  215. package/build/src/releasers/node.js +0 -84
  216. package/build/src/releasers/ocaml.d.ts +0 -5
  217. package/build/src/releasers/php-yoshi.d.ts +0 -5
  218. package/build/src/releasers/php-yoshi.js +0 -191
  219. package/build/src/releasers/php.d.ts +0 -7
  220. package/build/src/releasers/python.d.ts +0 -11
  221. package/build/src/releasers/python.js +0 -127
  222. package/build/src/releasers/ruby-yoshi.d.ts +0 -5
  223. package/build/src/releasers/ruby-yoshi.js +0 -142
  224. package/build/src/releasers/ruby.d.ts +0 -11
  225. package/build/src/releasers/rust.d.ts +0 -30
  226. package/build/src/releasers/rust.js +0 -163
  227. package/build/src/releasers/simple.d.ts +0 -5
  228. package/build/src/releasers/terraform-module.d.ts +0 -6
  229. package/build/src/updaters/elixir-mix-exs.d.ts +0 -13
  230. package/build/src/updaters/java/google-utils.d.ts +0 -13
  231. package/build/src/updaters/java/java_update.d.ts +0 -13
  232. package/build/src/updaters/java/pom-xml.d.ts +0 -3
  233. package/build/src/updaters/java/readme.d.ts +0 -3
  234. package/build/src/updaters/java/readme.js.map +0 -1
  235. package/build/src/updaters/package-json.d.ts +0 -16
  236. package/build/src/updaters/package-lock-json.d.ts +0 -7
  237. package/build/src/updaters/php-client-version.d.ts +0 -13
  238. package/build/src/updaters/php-manifest.d.ts +0 -13
  239. package/build/src/updaters/pubspec-yaml.d.ts +0 -13
  240. package/build/src/updaters/root-composer-update-package.d.ts +0 -13
  241. package/build/src/updaters/root-composer-update-package.js +0 -45
  242. package/build/src/updaters/root-composer-update-packages.d.ts +0 -13
  243. package/build/src/updaters/samples-package-json.d.ts +0 -13
  244. package/build/src/updaters/update.d.ts +0 -20
  245. package/build/src/updaters/version-rb.d.ts +0 -13
  246. package/build/src/updaters/version-txt.d.ts +0 -12
  247. package/build/src/updaters/version.d.ts +0 -13
  248. package/build/src/updaters/version.js +0 -31
  249. package/build/src/util/checkpoint.d.ts +0 -6
  250. package/build/src/util/checkpoint.js +0 -33
  251. package/build/src/util/release-notes.d.ts +0 -7
  252. package/build/src/util/release-notes.js +0 -34
  253. package/build/src/util/to-conventional-changelog-format.d.ts +0 -2
@@ -14,49 +14,48 @@
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.Ruby = void 0;
17
- const release_pr_1 = require("../release-pr");
18
17
  const indent_commit_1 = require("../util/indent-commit");
19
18
  // Generic
20
19
  const changelog_1 = require("../updaters/changelog");
21
20
  // Ruby
22
- const version_rb_1 = require("../updaters/version-rb");
23
- class Ruby extends release_pr_1.ReleasePR {
21
+ const version_rb_1 = require("../updaters/ruby/version-rb");
22
+ const strategy_1 = require("../strategy");
23
+ class Ruby extends strategy_1.Strategy {
24
24
  constructor(options) {
25
25
  var _a;
26
26
  super(options);
27
27
  this.versionFile = (_a = options.versionFile) !== null && _a !== void 0 ? _a : '';
28
+ this.tagSeparator = '/';
28
29
  }
29
- async buildUpdates(changelogEntry, candidate, packageName) {
30
+ async buildUpdates(options) {
30
31
  const updates = [];
32
+ const version = options.newVersion;
33
+ updates.push({
34
+ path: this.addPath(this.changelogPath),
35
+ createIfMissing: true,
36
+ updater: new changelog_1.Changelog({
37
+ version,
38
+ changelogEntry: options.changelogEntry,
39
+ }),
40
+ });
31
41
  const versionFile = this.versionFile
32
42
  ? this.versionFile
33
- : `lib/${packageName.name.replace(/-/g, '/')}/version.rb`;
34
- updates.push(new changelog_1.Changelog({
35
- path: this.addPath(this.changelogPath),
36
- changelogEntry,
37
- version: candidate.version,
38
- packageName: packageName.name,
39
- }));
40
- updates.push(new version_rb_1.VersionRB({
43
+ : `lib/${(this.component || '').replace(/-/g, '/')}/version.rb`;
44
+ updates.push({
41
45
  path: this.addPath(versionFile),
42
- changelogEntry,
43
- version: candidate.version,
44
- packageName: packageName.name,
45
- }));
46
+ createIfMissing: false,
47
+ updater: new version_rb_1.VersionRB({
48
+ version,
49
+ }),
50
+ });
46
51
  return updates;
47
52
  }
48
- tagSeparator() {
49
- return '/';
50
- }
51
- async commits(opts) {
52
- return postProcessCommits(await super.commits(opts));
53
+ postProcessCommits(commits) {
54
+ commits.forEach(commit => {
55
+ commit.message = indent_commit_1.indentCommit(commit);
56
+ });
57
+ return commits;
53
58
  }
54
59
  }
55
60
  exports.Ruby = Ruby;
56
- function postProcessCommits(commits) {
57
- commits.forEach(commit => {
58
- commit.message = indent_commit_1.indentCommit(commit);
59
- });
60
- return commits;
61
- }
62
61
  //# sourceMappingURL=ruby.js.map
@@ -0,0 +1,20 @@
1
+ import { CargoManifest } from '../updaters/rust/common';
2
+ import { Strategy, BuildUpdatesOptions } from '../strategy';
3
+ import { Version } from '../version';
4
+ import { Update } from '../update';
5
+ export declare class Rust extends Strategy {
6
+ private packageManifest?;
7
+ private workspaceManifest?;
8
+ protected buildUpdates(options: BuildUpdatesOptions): Promise<Update[]>;
9
+ protected initialReleaseVersion(): Version;
10
+ getDefaultPackageName(): Promise<string | undefined>;
11
+ /**
12
+ * @returns the package's manifest, ie. `crates/foobar/Cargo.toml`
13
+ */
14
+ protected getPackageManifest(): Promise<CargoManifest | null>;
15
+ /**
16
+ * @returns the workspace's manifest, ie. `Cargo.toml` (top-level)
17
+ */
18
+ protected getWorkspaceManifest(): Promise<CargoManifest | null>;
19
+ protected getManifest(path: string): Promise<CargoManifest | null>;
20
+ }
@@ -0,0 +1,120 @@
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.Rust = void 0;
17
+ // Generic
18
+ const changelog_1 = require("../updaters/changelog");
19
+ // Cargo.toml support
20
+ const cargo_toml_1 = require("../updaters/rust/cargo-toml");
21
+ const cargo_lock_1 = require("../updaters/rust/cargo-lock");
22
+ const common_1 = require("../updaters/rust/common");
23
+ const logger_1 = require("../util/logger");
24
+ const strategy_1 = require("../strategy");
25
+ const version_1 = require("../version");
26
+ class Rust extends strategy_1.Strategy {
27
+ async buildUpdates(options) {
28
+ const updates = [];
29
+ const version = options.newVersion;
30
+ updates.push({
31
+ path: this.addPath(this.changelogPath),
32
+ createIfMissing: true,
33
+ updater: new changelog_1.Changelog({
34
+ version,
35
+ changelogEntry: options.changelogEntry,
36
+ }),
37
+ });
38
+ const workspaceManifest = await this.getWorkspaceManifest();
39
+ const manifestPaths = [];
40
+ let lockPath;
41
+ if (workspaceManifest &&
42
+ workspaceManifest.workspace &&
43
+ workspaceManifest.workspace.members) {
44
+ const members = workspaceManifest.workspace.members;
45
+ logger_1.logger.info(`found workspace with ${members.length} members, upgrading all`);
46
+ for (const member of members) {
47
+ manifestPaths.push(`${member}/Cargo.toml`);
48
+ }
49
+ lockPath = 'Cargo.lock';
50
+ }
51
+ else {
52
+ const manifestPath = this.addPath('Cargo.toml');
53
+ logger_1.logger.info(`single crate found, updating ${manifestPath}`);
54
+ manifestPaths.push(manifestPath);
55
+ lockPath = this.addPath('Cargo.lock');
56
+ }
57
+ const versionsMap = new Map();
58
+ versionsMap.set(this.component || '', version);
59
+ for (const path of manifestPaths) {
60
+ updates.push({
61
+ path,
62
+ createIfMissing: false,
63
+ updater: new cargo_toml_1.CargoToml({
64
+ version,
65
+ versionsMap,
66
+ }),
67
+ });
68
+ }
69
+ updates.push({
70
+ path: lockPath,
71
+ createIfMissing: false,
72
+ updater: new cargo_lock_1.CargoLock({
73
+ version,
74
+ versionsMap,
75
+ }),
76
+ });
77
+ return updates;
78
+ }
79
+ initialReleaseVersion() {
80
+ return version_1.Version.parse('0.1.0');
81
+ }
82
+ async getDefaultPackageName() {
83
+ var _a;
84
+ const packageManifest = await this.getPackageManifest();
85
+ if (packageManifest) {
86
+ return (_a = packageManifest.package) === null || _a === void 0 ? void 0 : _a.name;
87
+ }
88
+ return undefined;
89
+ }
90
+ /**
91
+ * @returns the package's manifest, ie. `crates/foobar/Cargo.toml`
92
+ */
93
+ async getPackageManifest() {
94
+ if (this.packageManifest === undefined) {
95
+ this.packageManifest = await this.getManifest(this.addPath('Cargo.toml'));
96
+ }
97
+ return this.packageManifest;
98
+ }
99
+ /**
100
+ * @returns the workspace's manifest, ie. `Cargo.toml` (top-level)
101
+ */
102
+ async getWorkspaceManifest() {
103
+ if (this.workspaceManifest === undefined) {
104
+ this.workspaceManifest = await this.getManifest('Cargo.toml');
105
+ }
106
+ return this.workspaceManifest;
107
+ }
108
+ async getManifest(path) {
109
+ let content;
110
+ try {
111
+ content = await this.github.getFileContentsOnBranch(path, this.targetBranch);
112
+ }
113
+ catch (e) {
114
+ return null;
115
+ }
116
+ return common_1.parseCargoManifest(content.parsedContent);
117
+ }
118
+ }
119
+ exports.Rust = Rust;
120
+ //# sourceMappingURL=rust.js.map
@@ -0,0 +1,5 @@
1
+ import { Strategy, BuildUpdatesOptions } from '../strategy';
2
+ import { Update } from '../update';
3
+ export declare class Simple extends Strategy {
4
+ protected buildUpdates(options: BuildUpdatesOptions): Promise<Update[]>;
5
+ }
@@ -14,26 +14,30 @@
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.Simple = void 0;
17
- const release_pr_1 = require("../release-pr");
18
17
  // Generic
19
18
  const changelog_1 = require("../updaters/changelog");
20
19
  // version.txt support
21
- const version_txt_1 = require("../updaters/version-txt");
22
- class Simple extends release_pr_1.ReleasePR {
23
- async buildUpdates(changelogEntry, candidate, packageName) {
20
+ const strategy_1 = require("../strategy");
21
+ const default_1 = require("../updaters/default");
22
+ class Simple extends strategy_1.Strategy {
23
+ async buildUpdates(options) {
24
24
  const updates = [];
25
- updates.push(new changelog_1.Changelog({
25
+ const version = options.newVersion;
26
+ updates.push({
26
27
  path: this.addPath(this.changelogPath),
27
- changelogEntry,
28
- version: candidate.version,
29
- packageName: packageName.name,
30
- }));
31
- updates.push(new version_txt_1.VersionTxt({
28
+ createIfMissing: true,
29
+ updater: new changelog_1.Changelog({
30
+ version,
31
+ changelogEntry: options.changelogEntry,
32
+ }),
33
+ });
34
+ updates.push({
32
35
  path: this.addPath('version.txt'),
33
- changelogEntry,
34
- version: candidate.version,
35
- packageName: packageName.name,
36
- }));
36
+ createIfMissing: false,
37
+ updater: new default_1.DefaultUpdater({
38
+ version,
39
+ }),
40
+ });
37
41
  return updates;
38
42
  }
39
43
  }
@@ -0,0 +1,7 @@
1
+ import { Strategy, BuildUpdatesOptions } from '../strategy';
2
+ import { Update } from '../update';
3
+ import { Version } from '../version';
4
+ export declare class TerraformModule extends Strategy {
5
+ protected buildUpdates(options: BuildUpdatesOptions): Promise<Update[]>;
6
+ protected initialReleaseVersion(): Version;
7
+ }
@@ -14,52 +14,58 @@
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.TerraformModule = void 0;
17
- const release_pr_1 = require("../release-pr");
18
17
  // Generic
19
18
  const changelog_1 = require("../updaters/changelog");
20
19
  // Terraform specific.
21
20
  const readme_1 = require("../updaters/terraform/readme");
22
21
  const module_version_1 = require("../updaters/terraform/module-version");
23
- class TerraformModule extends release_pr_1.ReleasePR {
24
- async buildUpdates(changelogEntry, candidate, packageName) {
22
+ const strategy_1 = require("../strategy");
23
+ const version_1 = require("../version");
24
+ class TerraformModule extends strategy_1.Strategy {
25
+ async buildUpdates(options) {
25
26
  const updates = [];
26
- updates.push(new changelog_1.Changelog({
27
+ const version = options.newVersion;
28
+ updates.push({
27
29
  path: this.addPath(this.changelogPath),
28
- changelogEntry,
29
- version: candidate.version,
30
- packageName: packageName.name,
31
- }));
30
+ createIfMissing: true,
31
+ updater: new changelog_1.Changelog({
32
+ version,
33
+ changelogEntry: options.changelogEntry,
34
+ }),
35
+ });
32
36
  // Update version in README to current candidate version.
33
37
  // A module may have submodules, so find all submodules.
34
- const readmeFiles = await this.gh.findFilesByFilename('readme.md');
38
+ const readmeFiles = await this.github.findFilesByFilename('readme.md', this.path);
35
39
  readmeFiles.forEach(path => {
36
- updates.push(new readme_1.ReadMe({
40
+ updates.push({
37
41
  path: this.addPath(path),
38
- changelogEntry,
39
- version: candidate.version,
40
- packageName: packageName.name,
41
- }));
42
+ createIfMissing: false,
43
+ updater: new readme_1.ReadMe({
44
+ version,
45
+ }),
46
+ });
42
47
  });
43
48
  // Update versions.tf to current candidate version.
44
49
  // A module may have submodules, so find all versions.tfand versions.tf.tmpl to update.
45
50
  const versionFiles = await Promise.all([
46
- this.gh.findFilesByFilename('versions.tf'),
47
- this.gh.findFilesByFilename('versions.tf.tmpl'),
51
+ this.github.findFilesByFilename('versions.tf', this.path),
52
+ this.github.findFilesByFilename('versions.tf.tmpl', this.path),
48
53
  ]).then(([v, vt]) => {
49
54
  return v.concat(vt);
50
55
  });
51
56
  versionFiles.forEach(path => {
52
- updates.push(new module_version_1.ModuleVersion({
57
+ updates.push({
53
58
  path: this.addPath(path),
54
- changelogEntry,
55
- version: candidate.version,
56
- packageName: packageName.name,
57
- }));
59
+ createIfMissing: false,
60
+ updater: new module_version_1.ModuleVersion({
61
+ version,
62
+ }),
63
+ });
58
64
  });
59
65
  return updates;
60
66
  }
61
- defaultInitialVersion() {
62
- return '0.1.0';
67
+ initialReleaseVersion() {
68
+ return version_1.Version.parse('0.1.0');
63
69
  }
64
70
  }
65
71
  exports.TerraformModule = TerraformModule;
@@ -0,0 +1,100 @@
1
+ import { ReleasePullRequest } from './release-pull-request';
2
+ import { Release } from './release';
3
+ import { GitHub } from './github';
4
+ import { Version, VersionsMap } from './version';
5
+ import { Commit, ConventionalCommit } from './commit';
6
+ import { VersioningStrategy } from './versioning-strategy';
7
+ import { ChangelogNotes, ChangelogSection } from './changelog-notes';
8
+ import { Update } from './update';
9
+ import { Repository } from './repository';
10
+ import { PullRequest } from './pull-request';
11
+ import { TagName } from './util/tag-name';
12
+ export interface BuildUpdatesOptions {
13
+ changelogEntry: string;
14
+ newVersion: Version;
15
+ versionsMap: VersionsMap;
16
+ latestVersion?: Version;
17
+ }
18
+ export interface StrategyOptions {
19
+ path?: string;
20
+ bumpMinorPreMajor?: boolean;
21
+ bumpPatchForMinorPreMajor?: boolean;
22
+ github: GitHub;
23
+ component?: string;
24
+ packageName?: string;
25
+ versioningStrategy?: VersioningStrategy;
26
+ targetBranch: string;
27
+ changelogPath?: string;
28
+ changelogSections?: ChangelogSection[];
29
+ commitPartial?: string;
30
+ headerPartial?: string;
31
+ mainTemplate?: string;
32
+ tagSeparator?: string;
33
+ skipGitHubRelease?: boolean;
34
+ releaseAs?: string;
35
+ changelogNotes?: ChangelogNotes;
36
+ includeComponentInTag?: boolean;
37
+ }
38
+ /**
39
+ * A strategy is responsible for determining which files are
40
+ * necessary to update in a release pull request.
41
+ */
42
+ export declare abstract class Strategy {
43
+ readonly path: string;
44
+ protected github: GitHub;
45
+ readonly component?: string;
46
+ protected packageName?: string;
47
+ readonly versioningStrategy: VersioningStrategy;
48
+ protected targetBranch: string;
49
+ protected repository: Repository;
50
+ readonly changelogPath: string;
51
+ protected tagSeparator?: string;
52
+ private skipGitHubRelease;
53
+ private releaseAs?;
54
+ private includeComponentInTag;
55
+ protected changelogNotes: ChangelogNotes;
56
+ protected changelogSections?: ChangelogSection[];
57
+ constructor(options: StrategyOptions);
58
+ /**
59
+ * Specify the files necessary to update in a release pull request.
60
+ * @param {BuildUpdatesOptions} options
61
+ */
62
+ protected abstract buildUpdates(options: BuildUpdatesOptions): Promise<Update[]>;
63
+ getComponent(): Promise<string | undefined>;
64
+ getDefaultComponent(): Promise<string | undefined>;
65
+ getDefaultPackageName(): Promise<string | undefined>;
66
+ protected normalizeComponent(component: string | undefined): string;
67
+ /**
68
+ * Override this method to post process commits
69
+ * @param {ConventionalCommit[]} commits parsed commits
70
+ * @returns {ConventionalCommit[]} modified commits
71
+ */
72
+ protected postProcessCommits(commits: ConventionalCommit[]): ConventionalCommit[];
73
+ protected buildReleaseNotes(conventionalCommits: ConventionalCommit[], newVersion: Version, newVersionTag: TagName, latestRelease?: Release): Promise<string>;
74
+ /**
75
+ * Builds a candidate release pull request
76
+ * @param {Commit[]} commits Raw commits to consider for this release.
77
+ * @param {Release} latestRelease Optional. The last release for this
78
+ * component if available.
79
+ * @param {boolean} draft Optional. Whether or not to create the pull
80
+ * request as a draft. Defaults to `false`.
81
+ * @returns {ReleasePullRequest | undefined} The release pull request to
82
+ * open for this path/component. Returns undefined if we should not
83
+ * open a pull request.
84
+ */
85
+ buildReleasePullRequest(commits: Commit[], latestRelease?: Release, draft?: boolean, labels?: string[]): Promise<ReleasePullRequest | undefined>;
86
+ protected changelogEmpty(changelogEntry: string): boolean;
87
+ protected buildNewVersion(conventionalCommits: ConventionalCommit[], latestRelease?: Release): Promise<Version>;
88
+ protected buildVersionsMap(_conventionalCommits: ConventionalCommit[]): Promise<VersionsMap>;
89
+ /**
90
+ * Given a merged pull request, build the candidate release.
91
+ * @param {PullRequest} mergedPullRequest The merged release pull request.
92
+ * @returns {Release} The candidate release.
93
+ */
94
+ buildRelease(mergedPullRequest: PullRequest): Promise<Release | undefined>;
95
+ /**
96
+ * Override this to handle the initial version of a new library.
97
+ */
98
+ protected initialReleaseVersion(): Version;
99
+ protected addPath(file: string): string;
100
+ }