Skip to content

Commit

Permalink
chore: integrated requested review changes
Browse files Browse the repository at this point in the history
  • Loading branch information
amorscher committed Nov 7, 2022
1 parent ad81938 commit ee9e1e7
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 17 deletions.
6 changes: 3 additions & 3 deletions commands/version/README.md
Expand Up @@ -55,7 +55,7 @@ Running `lerna version --conventional-commits` without the above flags will rele
- [`--conventional-commits`](#--conventional-commits)
- [`--conventional-graduate`](#--conventional-graduate)
- [`--conventional-prerelease`](#--conventional-prerelease)
- [`--conventional-bumpprerelease`](#--conventional-bumpprerelease)
- [`--conventional-bump-prerelease`](#--conventional-bump-prerelease)
- [`--create-release <type>`](#--create-release-type)
- [`--exact`](#--exact)
- [`--force-publish`](#--force-publish)
Expand Down Expand Up @@ -202,10 +202,10 @@ lerna version --conventional-commits --conventional-prerelease

When run with this flag, `lerna version` will release with prerelease versions the specified packages (comma-separated) or all packages using `*`. Releases all unreleased changes as pre(patch/minor/major/release) by prefixing the version recommendation from `conventional-commits` with `pre`, eg. if present changes include a feature commit, the recommended bump will be `minor`, so this flag will result in a `preminor` release. If changes are present for packages that are not specified (if specifying packages), or for packages that are already in prerelease, those packages will be versioned as they normally would using `--conventional-commits`.

### `--conventional-bumpprerelease`
### `--conventional-bump-prerelease`

```sh
lerna version --conventional-commits --conventional-prerelease --conventional-bumpprerelease
lerna version --conventional-commits --conventional-prerelease --conventional-bump-prerelease
```

When run with this flag, `lerna version` will release with bumped prerelease versions even if already released packages are prereleases. Releases all unreleased changes as pre(patch/minor/major/release) by prefixing the version recommendation from `conventional-commits` with `pre`, eg. if present changes include a feature commit, the recommended bump will be `minor`, so this flag will result in a `preminor` release. If not used just a prerelease bump will be applied to prereleased packages.
Expand Down
Expand Up @@ -91,14 +91,14 @@ describe("--conventional-commits", () => {
});
});

it("should call recommended version with conventionalBumpprerelease set", async () => {
it("should call recommended version with conventionalBumpPrerelease set", async () => {
prereleaseVersionBumps.forEach((bump) => recommendVersion.mockResolvedValueOnce(bump));
const cwd = await initFixture("prerelease-independent");

await lernaVersion(cwd)(
"--conventional-commits",
"--conventional-prerelease",
"--conventional-bumpprerelease"
"--conventional-bump-prerelease"
);

prereleaseVersionBumps.forEach((version, name) => {
Expand All @@ -108,7 +108,7 @@ describe("--conventional-commits", () => {
rootPath: cwd,
tagPrefix: "v",
prereleaseId,
conventionalBumpprerelease: true,
conventionalBumpPrerelease: true,
});
expect(updateChangelog).toHaveBeenCalledWith(
expect.objectContaining({ name, version }),
Expand Down
4 changes: 2 additions & 2 deletions commands/version/command.js
Expand Up @@ -32,8 +32,8 @@ exports.builder = (yargs, composed) => {
describe: "Version changed packages as prereleases when using --conventional-commits.",
// type must remain ambiguous because it is overloaded (boolean _or_ string _or_ array)
},
"conventional-bumpprerelease": {
describe: "Bumps a prerelease versions if convetional commits require it.",
"conventional-bump-prerelease": {
describe: "Bumps prerelease versions if conventional commits requires it.",
type: "boolean",
},
"changelog-preset": {
Expand Down
4 changes: 2 additions & 2 deletions commands/version/index.js
Expand Up @@ -367,7 +367,7 @@ class VersionCommand extends Command {

recommendVersions(resolvePrereleaseId) {
const independentVersions = this.project.isIndependent();
const { changelogPreset, conventionalGraduate, conventionalBumpprerelease } = this.options;
const { changelogPreset, conventionalGraduate, conventionalBumpPrerelease } = this.options;
const rootPath = this.project.manifest.location;
const type = independentVersions ? "independent" : "fixed";
const prereleasePackageNames = this.getPrereleasePackageNames();
Expand All @@ -394,7 +394,7 @@ class VersionCommand extends Command {
rootPath,
tagPrefix: this.tagPrefix,
prereleaseId: getPrereleaseId(node),
conventionalBumpprerelease,
conventionalBumpPrerelease,
})
)
);
Expand Down
Expand Up @@ -118,17 +118,17 @@ describe("conventional-commits", () => {
recommendVersion(
pkg1,
"independent",
Object.assign(opts, { prereleaseId: "alpha", conventionalBumpprerelease: true })
Object.assign(opts, { prereleaseId: "alpha", conventionalBumpPrerelease: true })
),
recommendVersion(
pkg2,
"independent",
Object.assign(opts, { prereleaseId: "beta", conventionalBumpprerelease: true })
Object.assign(opts, { prereleaseId: "beta", conventionalBumpPrerelease: true })
),
recommendVersion(
pkg3,
"independent",
Object.assign(opts, { prereleaseId: "beta", conventionalBumpprerelease: true })
Object.assign(opts, { prereleaseId: "beta", conventionalBumpPrerelease: true })
),
]);

Expand Down
8 changes: 4 additions & 4 deletions core/conventional-commits/lib/recommend-version.js
Expand Up @@ -15,7 +15,7 @@ module.exports.recommendVersion = recommendVersion;
function recommendVersion(
pkg,
type,
{ changelogPreset, rootPath, tagPrefix, prereleaseId, conventionalBumpprerelease }
{ changelogPreset, rootPath, tagPrefix, prereleaseId, conventionalBumpPrerelease }
) {
log.silly(type, "for %s at %s", pkg.name, pkg.location);

Expand All @@ -30,8 +30,8 @@ function recommendVersion(
options.tagPrefix = tagPrefix;
}

const shouldBumpPrerelease = (releaseType, version, bumpPrerelease) => {
if (!semver.prerelease(version) || bumpPrerelease) {
const shouldBumpPrerelease = (releaseType, version) => {
if (!semver.prerelease(version)) {
return true;
}
switch (releaseType) {
Expand Down Expand Up @@ -63,7 +63,7 @@ function recommendVersion(
let releaseType = data.releaseType || "patch";

if (prereleaseId) {
const shouldBump = shouldBumpPrerelease(releaseType, pkg.version, conventionalBumpprerelease);
const shouldBump = conventionalBumpPrerelease || shouldBumpPrerelease(releaseType, pkg.version);
const prereleaseType = shouldBump ? `pre${releaseType}` : "prerelease";
log.verbose(type, "increment %s by %s", pkg.version, prereleaseType);
resolve(semver.inc(pkg.version, prereleaseType, prereleaseId));
Expand Down
7 changes: 7 additions & 0 deletions core/lerna/schemas/lerna-schema.json
Expand Up @@ -985,6 +985,9 @@
"conventionalPrerelease": {
"$ref": "#/$defs/commandOptions/version/conventionalPrerelease"
},
"conventionalBumpPrerelease": {
"$ref": "#/$defs/commandOptions/version/conventionalBumpPrerelease"
},
"changelogPreset": {
"$ref": "#/$defs/commandOptions/version/changelogPreset"
},
Expand Down Expand Up @@ -1673,6 +1676,10 @@
],
"description": "During `lerna version`, version changed packages as prereleases when using --conventional-commits."
},
"conventionalBumpPrerelease": {
"type": "boolean",
"description": "During `lerna version`, bumps version of changed prereleased packages when using --conventional-commits."
},
"changelogPreset": {
"type": "string",
"description": "For `lerna version`, the custom conventional-changelog preset."
Expand Down

0 comments on commit ee9e1e7

Please sign in to comment.