release-please 17.1.3 → 17.2.1

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.
@@ -77,6 +77,11 @@ function releaseOptions(yargs) {
77
77
  'tag creation upon "un-drafting" the release.',
78
78
  type: 'boolean',
79
79
  default: false,
80
+ })
81
+ .option('force-tag-creation', {
82
+ describe: 'Force the creation of a Git tag for the release.',
83
+ type: 'boolean',
84
+ default: false,
80
85
  })
81
86
  .option('prerelease', {
82
87
  describe: 'mark release that have prerelease versions ' +
@@ -380,6 +385,7 @@ const createReleaseCommand = {
380
385
  component: argv.component,
381
386
  packageName: argv.packageName,
382
387
  draft: argv.draft,
388
+ forceTag: argv.forceTag,
383
389
  prerelease: argv.prerelease,
384
390
  includeComponentInTag: argv.monorepoTags,
385
391
  includeVInTag: argv.includeVInTags,
@@ -497,6 +503,7 @@ const bootstrapCommand = {
497
503
  component: argv.component,
498
504
  packageName: argv.packageName,
499
505
  draft: argv.draft,
506
+ forceTag: argv.forceTag,
500
507
  prerelease: argv.prerelease,
501
508
  draftPullRequest: argv.draftPullRequest,
502
509
  bumpMinorPreMajor: argv.bumpMinorPreMajor,
@@ -57,6 +57,7 @@ interface TagIteratorOptions {
57
57
  export interface ReleaseOptions {
58
58
  draft?: boolean;
59
59
  prerelease?: boolean;
60
+ forceTag?: boolean;
60
61
  }
61
62
  export interface GitHubRelease {
62
63
  id: number;
@@ -274,6 +274,25 @@ class GitHub {
274
274
  * @throws {GitHubAPIError} on other API errors
275
275
  */
276
276
  this.createRelease = wrapAsync(async (release, options = {}) => {
277
+ if (options.forceTag) {
278
+ try {
279
+ await this.octokit.git.createRef({
280
+ owner: this.repository.owner,
281
+ repo: this.repository.repo,
282
+ ref: `refs/tags/${release.tag.toString()}`,
283
+ sha: release.sha,
284
+ });
285
+ }
286
+ catch (err) {
287
+ // ignore if tag already exists
288
+ if (err.status === 422) {
289
+ this.logger.debug(`Tag ${release.tag.toString()} already exists, skipping tag creation`);
290
+ }
291
+ else {
292
+ throw err;
293
+ }
294
+ }
295
+ }
277
296
  const resp = await this.octokit.repos.createRelease({
278
297
  name: release.name,
279
298
  owner: this.repository.owner,
@@ -14,4 +14,4 @@ export { Logger, setLogger } from './util/logger';
14
14
  export { GitHub } from './github';
15
15
  export declare const configSchema: any;
16
16
  export declare const manifestSchema: any;
17
- export declare const VERSION = "17.1.3";
17
+ export declare const VERSION = "17.2.1";
@@ -36,6 +36,6 @@ Object.defineProperty(exports, "GitHub", { enumerable: true, get: function () {
36
36
  exports.configSchema = require('../../schemas/config.json');
37
37
  exports.manifestSchema = require('../../schemas/manifest.json');
38
38
  // x-release-please-start-version
39
- exports.VERSION = '17.1.3';
39
+ exports.VERSION = '17.2.1';
40
40
  // x-release-please-end
41
41
  //# sourceMappingURL=index.js.map
@@ -55,12 +55,14 @@ export interface ReleaserConfig {
55
55
  skipGithubRelease?: boolean;
56
56
  skipChangelog?: boolean;
57
57
  draft?: boolean;
58
+ forceTag?: boolean;
58
59
  prerelease?: boolean;
59
60
  draftPullRequest?: boolean;
60
61
  component?: string;
61
62
  packageName?: string;
62
63
  includeComponentInTag?: boolean;
63
64
  includeVInTag?: boolean;
65
+ includeVInReleaseName?: boolean;
64
66
  pullRequestTitlePattern?: string;
65
67
  pullRequestHeader?: string;
66
68
  pullRequestFooter?: string;
@@ -91,6 +93,7 @@ export interface CandidateRelease extends Release {
91
93
  pullRequest: PullRequest;
92
94
  path: string;
93
95
  draft?: boolean;
96
+ forceTag?: boolean;
94
97
  prerelease?: boolean;
95
98
  }
96
99
  interface ReleaserConfigJson {
@@ -104,6 +107,7 @@ interface ReleaserConfigJson {
104
107
  'skip-github-release'?: boolean;
105
108
  'skip-changelog'?: boolean;
106
109
  draft?: boolean;
110
+ 'force-tag-creation'?: boolean;
107
111
  prerelease?: boolean;
108
112
  'draft-pull-request'?: boolean;
109
113
  label?: string;
@@ -111,6 +115,7 @@ interface ReleaserConfigJson {
111
115
  'extra-label'?: string;
112
116
  'include-component-in-tag'?: boolean;
113
117
  'include-v-in-tag'?: boolean;
118
+ 'include-v-in-release-name'?: boolean;
114
119
  'changelog-type'?: ChangelogNotesType;
115
120
  'changelog-host'?: string;
116
121
  'pull-request-title-pattern'?: string;
@@ -649,6 +649,7 @@ class Manifest {
649
649
  path,
650
650
  pullRequest,
651
651
  draft: (_a = config.draft) !== null && _a !== void 0 ? _a : this.draft,
652
+ forceTag: config.forceTag,
652
653
  prerelease: config.prerelease &&
653
654
  (!!release.tag.version.preRelease ||
654
655
  release.tag.version.major === 0),
@@ -751,6 +752,7 @@ class Manifest {
751
752
  const githubRelease = await this.github.createRelease(release, {
752
753
  draft: release.draft,
753
754
  prerelease: release.prerelease,
755
+ forceTag: release.forceTag,
754
756
  });
755
757
  return {
756
758
  ...githubRelease,
@@ -819,6 +821,7 @@ function extractReleaserConfig(config) {
819
821
  skipGithubRelease: config['skip-github-release'],
820
822
  skipChangelog: config['skip-changelog'],
821
823
  draft: config.draft,
824
+ forceTag: config['force-tag-creation'],
822
825
  prerelease: config.prerelease,
823
826
  draftPullRequest: config['draft-pull-request'],
824
827
  component: config['component'],
@@ -827,6 +830,7 @@ function extractReleaserConfig(config) {
827
830
  extraFiles: config['extra-files'],
828
831
  includeComponentInTag: config['include-component-in-tag'],
829
832
  includeVInTag: config['include-v-in-tag'],
833
+ includeVInReleaseName: config['include-v-in-release-name'],
830
834
  changelogType: config['changelog-type'],
831
835
  pullRequestTitlePattern: config['pull-request-title-pattern'],
832
836
  pullRequestHeader: config['pull-request-header'],
@@ -1054,7 +1058,7 @@ async function latestReleaseVersion(github, targetBranch, releaseFilter, config,
1054
1058
  return candidateTagVersion.sort((a, b) => b.compare(a))[0];
1055
1059
  }
1056
1060
  function mergeReleaserConfig(defaultConfig, pathConfig) {
1057
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8;
1061
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10;
1058
1062
  return {
1059
1063
  releaseType: (_b = (_a = pathConfig.releaseType) !== null && _a !== void 0 ? _a : defaultConfig.releaseType) !== null && _b !== void 0 ? _b : 'node',
1060
1064
  bumpMinorPreMajor: (_c = pathConfig.bumpMinorPreMajor) !== null && _c !== void 0 ? _c : defaultConfig.bumpMinorPreMajor,
@@ -1069,25 +1073,27 @@ function mergeReleaserConfig(defaultConfig, pathConfig) {
1069
1073
  skipGithubRelease: (_m = pathConfig.skipGithubRelease) !== null && _m !== void 0 ? _m : defaultConfig.skipGithubRelease,
1070
1074
  skipChangelog: (_o = pathConfig.skipChangelog) !== null && _o !== void 0 ? _o : defaultConfig.skipChangelog,
1071
1075
  draft: (_p = pathConfig.draft) !== null && _p !== void 0 ? _p : defaultConfig.draft,
1072
- draftPullRequest: (_q = pathConfig.draftPullRequest) !== null && _q !== void 0 ? _q : defaultConfig.draftPullRequest,
1073
- prerelease: (_r = pathConfig.prerelease) !== null && _r !== void 0 ? _r : defaultConfig.prerelease,
1074
- component: (_s = pathConfig.component) !== null && _s !== void 0 ? _s : defaultConfig.component,
1075
- packageName: (_t = pathConfig.packageName) !== null && _t !== void 0 ? _t : defaultConfig.packageName,
1076
- versionFile: (_u = pathConfig.versionFile) !== null && _u !== void 0 ? _u : defaultConfig.versionFile,
1077
- extraFiles: (_v = pathConfig.extraFiles) !== null && _v !== void 0 ? _v : defaultConfig.extraFiles,
1078
- includeComponentInTag: (_w = pathConfig.includeComponentInTag) !== null && _w !== void 0 ? _w : defaultConfig.includeComponentInTag,
1079
- includeVInTag: (_x = pathConfig.includeVInTag) !== null && _x !== void 0 ? _x : defaultConfig.includeVInTag,
1080
- tagSeparator: (_y = pathConfig.tagSeparator) !== null && _y !== void 0 ? _y : defaultConfig.tagSeparator,
1081
- pullRequestTitlePattern: (_z = pathConfig.pullRequestTitlePattern) !== null && _z !== void 0 ? _z : defaultConfig.pullRequestTitlePattern,
1082
- pullRequestHeader: (_0 = pathConfig.pullRequestHeader) !== null && _0 !== void 0 ? _0 : defaultConfig.pullRequestHeader,
1083
- pullRequestFooter: (_1 = pathConfig.pullRequestFooter) !== null && _1 !== void 0 ? _1 : defaultConfig.pullRequestFooter,
1084
- componentNoSpace: (_2 = pathConfig.componentNoSpace) !== null && _2 !== void 0 ? _2 : defaultConfig.componentNoSpace,
1085
- separatePullRequests: (_3 = pathConfig.separatePullRequests) !== null && _3 !== void 0 ? _3 : defaultConfig.separatePullRequests,
1086
- skipSnapshot: (_4 = pathConfig.skipSnapshot) !== null && _4 !== void 0 ? _4 : defaultConfig.skipSnapshot,
1087
- initialVersion: (_5 = pathConfig.initialVersion) !== null && _5 !== void 0 ? _5 : defaultConfig.initialVersion,
1088
- extraLabels: (_6 = pathConfig.extraLabels) !== null && _6 !== void 0 ? _6 : defaultConfig.extraLabels,
1089
- excludePaths: (_7 = pathConfig.excludePaths) !== null && _7 !== void 0 ? _7 : defaultConfig.excludePaths,
1090
- dateFormat: (_8 = pathConfig.dateFormat) !== null && _8 !== void 0 ? _8 : defaultConfig.dateFormat,
1076
+ forceTag: (_q = pathConfig.forceTag) !== null && _q !== void 0 ? _q : defaultConfig.forceTag,
1077
+ draftPullRequest: (_r = pathConfig.draftPullRequest) !== null && _r !== void 0 ? _r : defaultConfig.draftPullRequest,
1078
+ prerelease: (_s = pathConfig.prerelease) !== null && _s !== void 0 ? _s : defaultConfig.prerelease,
1079
+ component: (_t = pathConfig.component) !== null && _t !== void 0 ? _t : defaultConfig.component,
1080
+ packageName: (_u = pathConfig.packageName) !== null && _u !== void 0 ? _u : defaultConfig.packageName,
1081
+ versionFile: (_v = pathConfig.versionFile) !== null && _v !== void 0 ? _v : defaultConfig.versionFile,
1082
+ extraFiles: (_w = pathConfig.extraFiles) !== null && _w !== void 0 ? _w : defaultConfig.extraFiles,
1083
+ includeComponentInTag: (_x = pathConfig.includeComponentInTag) !== null && _x !== void 0 ? _x : defaultConfig.includeComponentInTag,
1084
+ includeVInTag: (_y = pathConfig.includeVInTag) !== null && _y !== void 0 ? _y : defaultConfig.includeVInTag,
1085
+ includeVInReleaseName: (_z = pathConfig.includeVInReleaseName) !== null && _z !== void 0 ? _z : defaultConfig.includeVInReleaseName,
1086
+ tagSeparator: (_0 = pathConfig.tagSeparator) !== null && _0 !== void 0 ? _0 : defaultConfig.tagSeparator,
1087
+ pullRequestTitlePattern: (_1 = pathConfig.pullRequestTitlePattern) !== null && _1 !== void 0 ? _1 : defaultConfig.pullRequestTitlePattern,
1088
+ pullRequestHeader: (_2 = pathConfig.pullRequestHeader) !== null && _2 !== void 0 ? _2 : defaultConfig.pullRequestHeader,
1089
+ pullRequestFooter: (_3 = pathConfig.pullRequestFooter) !== null && _3 !== void 0 ? _3 : defaultConfig.pullRequestFooter,
1090
+ componentNoSpace: (_4 = pathConfig.componentNoSpace) !== null && _4 !== void 0 ? _4 : defaultConfig.componentNoSpace,
1091
+ separatePullRequests: (_5 = pathConfig.separatePullRequests) !== null && _5 !== void 0 ? _5 : defaultConfig.separatePullRequests,
1092
+ skipSnapshot: (_6 = pathConfig.skipSnapshot) !== null && _6 !== void 0 ? _6 : defaultConfig.skipSnapshot,
1093
+ initialVersion: (_7 = pathConfig.initialVersion) !== null && _7 !== void 0 ? _7 : defaultConfig.initialVersion,
1094
+ extraLabels: (_8 = pathConfig.extraLabels) !== null && _8 !== void 0 ? _8 : defaultConfig.extraLabels,
1095
+ excludePaths: (_9 = pathConfig.excludePaths) !== null && _9 !== void 0 ? _9 : defaultConfig.excludePaths,
1096
+ dateFormat: (_10 = pathConfig.dateFormat) !== null && _10 !== void 0 ? _10 : defaultConfig.dateFormat,
1091
1097
  };
1092
1098
  }
1093
1099
  /**
@@ -43,6 +43,7 @@ export interface BaseStrategyOptions {
43
43
  changelogNotes?: ChangelogNotes;
44
44
  includeComponentInTag?: boolean;
45
45
  includeVInTag?: boolean;
46
+ includeVInReleaseName?: boolean;
46
47
  pullRequestTitlePattern?: string;
47
48
  pullRequestHeader?: string;
48
49
  pullRequestFooter?: string;
@@ -77,6 +78,7 @@ export declare abstract class BaseStrategy implements Strategy {
77
78
  private releaseAs?;
78
79
  protected includeComponentInTag: boolean;
79
80
  protected includeVInTag: boolean;
81
+ protected includeVInReleaseName: boolean;
80
82
  protected initialVersion?: string;
81
83
  readonly pullRequestTitlePattern?: string;
82
84
  readonly pullRequestHeader?: string;
@@ -37,7 +37,7 @@ const DEFAULT_CHANGELOG_PATH = 'CHANGELOG.md';
37
37
  */
38
38
  class BaseStrategy {
39
39
  constructor(options) {
40
- var _a, _b, _c;
40
+ var _a, _b, _c, _d;
41
41
  this.logger = (_a = options.logger) !== null && _a !== void 0 ? _a : logger_1.logger;
42
42
  this.path = options.path || manifest_1.ROOT_PROJECT_PATH;
43
43
  this.github = options.github;
@@ -60,6 +60,7 @@ class BaseStrategy {
60
60
  options.changelogNotes || new default_2.DefaultChangelogNotes(options);
61
61
  this.includeComponentInTag = (_b = options.includeComponentInTag) !== null && _b !== void 0 ? _b : true;
62
62
  this.includeVInTag = (_c = options.includeVInTag) !== null && _c !== void 0 ? _c : true;
63
+ this.includeVInReleaseName = (_d = options.includeVInReleaseName) !== null && _d !== void 0 ? _d : true;
63
64
  this.pullRequestTitlePattern = options.pullRequestTitlePattern;
64
65
  this.pullRequestHeader = options.pullRequestHeader;
65
66
  this.pullRequestFooter = options.pullRequestFooter;
@@ -420,9 +421,10 @@ class BaseStrategy {
420
421
  return;
421
422
  }
422
423
  const tag = new tag_name_1.TagName(version, this.includeComponentInTag ? component : undefined, this.tagSeparator, this.includeVInTag);
424
+ const versionPrefix = this.includeVInReleaseName ? 'v' : '';
423
425
  const releaseName = component && this.includeComponentInTag
424
- ? `${component}: v${version.toString()}`
425
- : `v${version.toString()}`;
426
+ ? `${component}: ${versionPrefix}${version.toString()}`
427
+ : `${versionPrefix}${version.toString()}`;
426
428
  return {
427
429
  name: releaseName,
428
430
  tag,
@@ -61,6 +61,7 @@ function releaserConfigToJsonConfig(config) {
61
61
  'release-label': (_b = config.releaseLabels) === null || _b === void 0 ? void 0 : _b.join(','),
62
62
  'include-component-in-tag': config.includeComponentInTag,
63
63
  'include-v-in-tag': config.includeVInTag,
64
+ 'include-v-in-release-name': config.includeVInReleaseName,
64
65
  'changelog-type': config.changelogType,
65
66
  'changelog-host': config.changelogHost,
66
67
  'pull-request-title-pattern': config.pullRequestTitlePattern,
@@ -18,7 +18,11 @@ const fs_1 = require("fs");
18
18
  // if an option looks like a file path, assume it's a
19
19
  // path to a key and load it.
20
20
  function coerceOption(option) {
21
- if (option.match(/[\\/]/)) {
21
+ // Only check .match if option is a string, to avoid TypeError.
22
+ // This might happen if the user didn't pass any payload for
23
+ // the option, or if the payload is empty. Example:
24
+ // --token $EMPTY_VAR
25
+ if (typeof option === 'string' && option.match(/[\\/]/)) {
22
26
  try {
23
27
  const stat = (0, fs_1.statSync)(option);
24
28
  if (stat.isDirectory())
@@ -19,6 +19,7 @@ const semver = require("semver");
19
19
  const default_1 = require("./default");
20
20
  const versioning_strategy_1 = require("../versioning-strategy");
21
21
  const DEPENDENCY_UPDATE_REGEX = /^deps: update dependency (.*) to (v[^\s]*)(\s\(#\d+\))?$/m;
22
+ const DEPENDABOT_DEPENDENCY_UPDATE_REGEX = /^(?:chore|build)\(deps\): bump (.*) from [^\s]* to ([^\s]*)(\s\(#\d+\))?$/m;
22
23
  /**
23
24
  * This VersioningStrategy looks at `deps` type commits and tries to
24
25
  * mirror the semantic version bump for that dependency update. For
@@ -73,10 +74,14 @@ class DependencyManifest extends default_1.DefaultVersioningStrategy {
73
74
  }
74
75
  }
75
76
  exports.DependencyManifest = DependencyManifest;
77
+ function matchCommit(commit) {
78
+ return (commit.message.match(DEPENDENCY_UPDATE_REGEX) ||
79
+ commit.message.match(DEPENDABOT_DEPENDENCY_UPDATE_REGEX));
80
+ }
76
81
  function buildDependencyUpdates(commits) {
77
82
  const versionsMap = {};
78
83
  for (const commit of commits) {
79
- const match = commit.message.match(DEPENDENCY_UPDATE_REGEX);
84
+ const match = matchCommit(commit);
80
85
  if (!match)
81
86
  continue;
82
87
  const versionString = match[2];
@@ -4,6 +4,7 @@ import { ConventionalCommit } from '..';
4
4
  import { VersionUpdater } from '../versioning-strategy';
5
5
  interface PrereleaseVersioningStrategyOptions extends DefaultVersioningStrategyOptions {
6
6
  prereleaseType?: string;
7
+ prerelease?: boolean;
7
8
  }
8
9
  /**
9
10
  * This versioning strategy will increment the pre-release number for patch
@@ -12,6 +13,7 @@ interface PrereleaseVersioningStrategyOptions extends DefaultVersioningStrategyO
12
13
  */
13
14
  export declare class PrereleaseVersioningStrategy extends DefaultVersioningStrategy {
14
15
  readonly prereleaseType?: string;
16
+ readonly prerelease: boolean;
15
17
  constructor(options?: PrereleaseVersioningStrategyOptions);
16
18
  determineReleaseType(version: Version, commits: ConventionalCommit[]): VersionUpdater;
17
19
  }
@@ -109,6 +109,7 @@ class PrereleaseVersioningStrategy extends default_1.DefaultVersioningStrategy {
109
109
  constructor(options = {}) {
110
110
  super(options);
111
111
  this.prereleaseType = options.prereleaseType;
112
+ this.prerelease = options.prerelease === true;
112
113
  }
113
114
  determineReleaseType(version, commits) {
114
115
  // iterate through list of commits and find biggest commit type
@@ -128,23 +129,31 @@ class PrereleaseVersioningStrategy extends default_1.DefaultVersioningStrategy {
128
129
  features++;
129
130
  }
130
131
  }
132
+ let bumpedVersionUpdater;
131
133
  if (breaking > 0) {
132
134
  if (version.isPreMajor && this.bumpMinorPreMajor) {
133
- return new PrereleaseMinorVersionUpdate(this.prereleaseType);
135
+ bumpedVersionUpdater = new PrereleaseMinorVersionUpdate(this.prereleaseType);
134
136
  }
135
137
  else {
136
- return new PrereleaseMajorVersionUpdate(this.prereleaseType);
138
+ bumpedVersionUpdater = new PrereleaseMajorVersionUpdate(this.prereleaseType);
137
139
  }
138
140
  }
139
141
  else if (features > 0) {
140
142
  if (version.isPreMajor && this.bumpPatchForMinorPreMajor) {
141
- return new PrereleasePatchVersionUpdate(this.prereleaseType);
143
+ bumpedVersionUpdater = new PrereleasePatchVersionUpdate(this.prereleaseType);
142
144
  }
143
145
  else {
144
- return new PrereleaseMinorVersionUpdate(this.prereleaseType);
146
+ bumpedVersionUpdater = new PrereleaseMinorVersionUpdate(this.prereleaseType);
145
147
  }
146
148
  }
147
- return new PrereleasePatchVersionUpdate(this.prereleaseType);
149
+ else {
150
+ bumpedVersionUpdater = new PrereleasePatchVersionUpdate(this.prereleaseType);
151
+ }
152
+ if (!this.prerelease) {
153
+ const bumpedVersion = bumpedVersionUpdater.bump(version);
154
+ return new versioning_strategy_1.CustomVersionUpdate(version_1.Version.parse(`${bumpedVersion.major}.${bumpedVersion.minor}.${bumpedVersion.patch}`).toString());
155
+ }
156
+ return bumpedVersionUpdater;
148
157
  }
149
158
  }
150
159
  exports.PrereleaseVersioningStrategy = PrereleaseVersioningStrategy;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-please",
3
- "version": "17.1.3",
3
+ "version": "17.2.1",
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",
@@ -48,7 +48,6 @@
48
48
  "@types/mocha": "^10.0.0",
49
49
  "@types/node": "^18.0.0",
50
50
  "@types/npmlog": "^7.0.0",
51
- "@types/pino": "^7.0.0",
52
51
  "@types/semver": "^7.0.0",
53
52
  "@types/sinon": "^17.0.0",
54
53
  "@types/xmldom": "^0.1.31",
@@ -82,7 +81,7 @@
82
81
  "conventional-changelog-writer": "^6.0.0",
83
82
  "conventional-commits-filter": "^3.0.0",
84
83
  "detect-indent": "^6.1.0",
85
- "diff": "^7.0.0",
84
+ "diff": "^8.0.3",
86
85
  "figures": "^3.0.0",
87
86
  "http-proxy-agent": "^7.0.0",
88
87
  "https-proxy-agent": "^7.0.0",
@@ -66,6 +66,10 @@
66
66
  "description": "Create the GitHub release in draft mode. Defaults to `false`.",
67
67
  "type": "boolean"
68
68
  },
69
+ "force-tag-creation": {
70
+ "description": "Force the creation of a Git tag for the release. This is particularly useful when `draft` is enabled, because GitHub does not create a Git tag for draft releases until they are published. This 'lazy tag creation' causes release-please to fail to find the previous release, potentially generating incorrect changelogs. Setting this to `true` ensures the tag is created immediately. Defaults to `false`.",
71
+ "type": "boolean"
72
+ },
69
73
  "prerelease": {
70
74
  "description": "Create the GitHub release as prerelease. Defaults to `false`.",
71
75
  "type": "boolean"
@@ -83,7 +87,11 @@
83
87
  "type": "boolean"
84
88
  },
85
89
  "include-v-in-tag": {
86
- "description": "When tagging a release, include `v` in the tag. Defaults to `false`.",
90
+ "description": "When tagging a release, include `v` in the tag. Defaults to `true`.",
91
+ "type": "boolean"
92
+ },
93
+ "include-v-in-release-name": {
94
+ "description": "Include `v` in the GitHub release name. Defaults to `true`.",
87
95
  "type": "boolean"
88
96
  },
89
97
  "changelog-type": {
@@ -464,6 +472,7 @@
464
472
  "skip-github-release": true,
465
473
  "skip-changelog": true,
466
474
  "draft": true,
475
+ "force-tag-creation": true,
467
476
  "prerelease": true,
468
477
  "draft-pull-request": true,
469
478
  "label": true,
@@ -471,6 +480,7 @@
471
480
  "extra-label": true,
472
481
  "include-component-in-tag": true,
473
482
  "include-v-in-tag": true,
483
+ "include-v-in-release-name": true,
474
484
  "changelog-type": true,
475
485
  "changelog-host": true,
476
486
  "changelog-path": true,