release-please 13.17.1 → 13.18.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,18 @@
4
4
 
5
5
  [1]: https://www.npmjs.com/package/release-please?activeTab=versions
6
6
 
7
+ ## [13.18.0](https://github.com/googleapis/release-please/compare/v13.17.1...v13.18.0) (2022-06-01)
8
+
9
+
10
+ ### Features
11
+
12
+ * add support for generic yaml updater ([#1452](https://github.com/googleapis/release-please/issues/1452)) ([002231a](https://github.com/googleapis/release-please/commit/002231acfa49b3859a7eaee184a2b520eb6611d3))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * fix parsing of tags with major versions higher than 9 ([#1451](https://github.com/googleapis/release-please/issues/1451)) ([5fc402a](https://github.com/googleapis/release-please/commit/5fc402ae41cd5aba4be5155f90fbc39f9369817d))
18
+
7
19
  ### [13.17.1](https://github.com/googleapis/release-please/compare/v13.17.0...v13.17.1) (2022-05-27)
8
20
 
9
21
 
@@ -10,6 +10,11 @@ declare type ExtraJsonFile = {
10
10
  path: string;
11
11
  jsonpath: string;
12
12
  };
13
+ declare type ExtraYamlFile = {
14
+ type: 'yaml';
15
+ path: string;
16
+ jsonpath: string;
17
+ };
13
18
  declare type ExtraXmlFile = {
14
19
  type: 'xml';
15
20
  path: string;
@@ -19,7 +24,7 @@ declare type ExtraPomFile = {
19
24
  type: 'pom';
20
25
  path: string;
21
26
  };
22
- export declare type ExtraFile = string | ExtraJsonFile | ExtraXmlFile | ExtraPomFile;
27
+ export declare type ExtraFile = string | ExtraJsonFile | ExtraYamlFile | ExtraXmlFile | ExtraPomFile;
23
28
  /**
24
29
  * These are configurations provided to each strategy per-path.
25
30
  */
@@ -29,6 +29,7 @@ const generic_1 = require("../updaters/generic");
29
29
  const generic_json_1 = require("../updaters/generic-json");
30
30
  const generic_xml_1 = require("../updaters/generic-xml");
31
31
  const pom_xml_1 = require("../updaters/java/pom-xml");
32
+ const generic_yaml_1 = require("../updaters/generic-yaml");
32
33
  const DEFAULT_CHANGELOG_PATH = 'CHANGELOG.md';
33
34
  /**
34
35
  * A strategy is responsible for determining which files are
@@ -183,6 +184,12 @@ class BaseStrategy {
183
184
  createIfMissing: false,
184
185
  updater: new generic_json_1.GenericJson(extraFile.jsonpath, version),
185
186
  };
187
+ case 'yaml':
188
+ return {
189
+ path: this.addPath(extraFile.path),
190
+ createIfMissing: false,
191
+ updater: new generic_yaml_1.GenericYaml(extraFile.jsonpath, version),
192
+ };
186
193
  case 'xml':
187
194
  return {
188
195
  path: this.addPath(extraFile.path),
@@ -0,0 +1,22 @@
1
+ import { Updater } from '../update';
2
+ import { Version } from '../version';
3
+ /**
4
+ * Updates YAML document according to given JSONPath.
5
+ *
6
+ * Note that used parser does reformat the document and removes all comments,
7
+ * and converts everything to pure YAML (even JSON source).
8
+ * If you want to retain formatting, use generic updater with comment hints.
9
+ *
10
+ * When applied on multi-document file, it updates all documents.
11
+ */
12
+ export declare class GenericYaml implements Updater {
13
+ readonly jsonpath: string;
14
+ readonly version: Version;
15
+ constructor(jsonpath: string, version: Version);
16
+ /**
17
+ * Given initial file contents, return updated contents.
18
+ * @param {string} content The initial content
19
+ * @returns {string} The updated content
20
+ */
21
+ updateContent(content: string): string;
22
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ // Copyright 2022 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.GenericYaml = void 0;
17
+ const jp = require("jsonpath");
18
+ const yaml = require("js-yaml");
19
+ const logger_1 = require("../util/logger");
20
+ const DOCUMENT_SEPARATOR = '---\n';
21
+ /**
22
+ * Updates YAML document according to given JSONPath.
23
+ *
24
+ * Note that used parser does reformat the document and removes all comments,
25
+ * and converts everything to pure YAML (even JSON source).
26
+ * If you want to retain formatting, use generic updater with comment hints.
27
+ *
28
+ * When applied on multi-document file, it updates all documents.
29
+ */
30
+ class GenericYaml {
31
+ constructor(jsonpath, version) {
32
+ this.jsonpath = jsonpath;
33
+ this.version = version;
34
+ }
35
+ /**
36
+ * Given initial file contents, return updated contents.
37
+ * @param {string} content The initial content
38
+ * @returns {string} The updated content
39
+ */
40
+ updateContent(content) {
41
+ // Parse possibly multi-document file
42
+ let docs;
43
+ try {
44
+ docs = yaml.loadAll(content, null, { json: true });
45
+ }
46
+ catch (e) {
47
+ logger_1.logger.warn('Invalid yaml, cannot be parsed', e);
48
+ return content;
49
+ }
50
+ // Update each document
51
+ let modified = false;
52
+ docs.forEach(data => {
53
+ const nodes = jp.apply(data, this.jsonpath, _val => {
54
+ return this.version.toString();
55
+ });
56
+ if (nodes && nodes.length) {
57
+ modified = true;
58
+ }
59
+ });
60
+ // If nothing was modified, return original content
61
+ if (!modified) {
62
+ logger_1.logger.warn(`No entries modified in ${this.jsonpath}`);
63
+ return content;
64
+ }
65
+ // Stringify documents
66
+ if (docs.length === 1) {
67
+ // Single doc
68
+ return yaml.dump(docs[0]);
69
+ }
70
+ else {
71
+ // Multi-document, each document starts with separator
72
+ return docs.map(data => DOCUMENT_SEPARATOR + yaml.dump(data)).join('');
73
+ }
74
+ }
75
+ }
76
+ exports.GenericYaml = GenericYaml;
77
+ //# sourceMappingURL=generic-yaml.js.map
@@ -15,7 +15,7 @@
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.TagName = void 0;
17
17
  const version_1 = require("../version");
18
- const TAG_PATTERN = /^((?<component>.*)(?<separator>[^a-zA-Z]))?(?<v>v)?(?<version>\d+\.\d+\.\d+.*)$/;
18
+ const TAG_PATTERN = /^((?<component>.*)(?<separator>[^a-zA-Z0-9]))?(?<v>v)?(?<version>\d+\.\d+\.\d+.*)$/;
19
19
  const DEFAULT_SEPARATOR = '-';
20
20
  class TagName {
21
21
  constructor(version, component, separator = DEFAULT_SEPARATOR, includeV = true) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-please",
3
- "version": "13.17.1",
3
+ "version": "13.18.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",