@lerna/collect-updates
Advanced tools
Comparing version 3.13.3 to 3.14.0
@@ -6,2 +6,13 @@ # Change Log | ||
# [3.14.0](https://github.com/lerna/lerna/compare/v3.13.4...v3.14.0) (2019-05-14) | ||
### Features | ||
* **conventional-commits:** Add conventional prerelease/graduation ([#1991](https://github.com/lerna/lerna/issues/1991)) ([5d84b61](https://github.com/lerna/lerna/commit/5d84b61)), closes [#1433](https://github.com/lerna/lerna/issues/1433) [#1675](https://github.com/lerna/lerna/issues/1675) | ||
## [3.13.3](https://github.com/lerna/lerna/compare/v3.13.2...v3.13.3) (2019-04-17) | ||
@@ -8,0 +19,0 @@ |
@@ -7,10 +7,17 @@ "use strict"; | ||
const hasTags = require("./lib/has-tags"); | ||
const collectDependents = require("./lib/collect-dependents"); | ||
const getForcedPackages = require("./lib/get-forced-packages"); | ||
const collectPackages = require("./lib/collect-packages"); | ||
const getPackagesForOption = require("./lib/get-packages-for-option"); | ||
const makeDiffPredicate = require("./lib/make-diff-predicate"); | ||
module.exports = collectUpdates; | ||
module.exports.collectPackages = collectPackages; | ||
module.exports.getPackagesForOption = getPackagesForOption; | ||
function collectUpdates(filteredPackages, packageGraph, execOpts, commandOptions) { | ||
const forced = getForcedPackages(commandOptions.forcePublish); | ||
const { forcePublish, conventionalCommits, conventionalGraduate } = commandOptions; | ||
// If --conventional-commits and --conventional-graduate are both set, ignore --force-publish | ||
const useConventionalGraduate = conventionalCommits && conventionalGraduate; | ||
const forced = getPackagesForOption(useConventionalGraduate ? conventionalGraduate : forcePublish); | ||
const packages = | ||
@@ -47,43 +54,39 @@ filteredPackages.length === packageGraph.size | ||
// "warn" might seem a bit loud, but it is appropriate for logging anything _forced_ | ||
log.warn("force-publish", forced.has("*") ? "all packages" : Array.from(forced.values()).join("\n")); | ||
log.warn( | ||
useConventionalGraduate ? "conventional-graduate" : "force-publish", | ||
forced.has("*") ? "all packages" : Array.from(forced.values()).join("\n") | ||
); | ||
} | ||
let candidates; | ||
if (!committish || forced.has("*")) { | ||
if (useConventionalGraduate) { | ||
// --conventional-commits --conventional-graduate | ||
if (forced.has("*")) { | ||
log.info("", "Graduating all prereleased packages"); | ||
} else { | ||
log.info("", "Graduating prereleased packages"); | ||
} | ||
} else if (!committish || forced.has("*")) { | ||
// --force-publish or no tag | ||
log.info("", "Assuming all packages changed"); | ||
candidates = new Set(packages.values()); | ||
} else { | ||
log.info("", `Looking for changed packages since ${committish}`); | ||
candidates = new Set(); | ||
const hasDiff = makeDiffPredicate(committish, execOpts, commandOptions.ignoreChanges); | ||
const needsBump = | ||
!commandOptions.bump || commandOptions.bump.startsWith("pre") | ||
? () => false | ||
: /* skip packages that have not been previously prereleased */ | ||
node => node.prereleaseId; | ||
packages.forEach((node, name) => { | ||
if (forced.has(name) || needsBump(node) || hasDiff(node)) { | ||
candidates.add(node); | ||
} | ||
return collectPackages(packages, { | ||
onInclude: name => log.verbose("updated", name), | ||
}); | ||
} | ||
const dependents = collectDependents(candidates); | ||
dependents.forEach(node => candidates.add(node)); | ||
log.info("", `Looking for changed packages since ${committish}`); | ||
// The result should always be in the same order as the input | ||
const updates = []; | ||
const hasDiff = makeDiffPredicate(committish, execOpts, commandOptions.ignoreChanges); | ||
const needsBump = | ||
!commandOptions.bump || commandOptions.bump.startsWith("pre") | ||
? () => false | ||
: /* skip packages that have not been previously prereleased */ | ||
node => node.prereleaseId; | ||
const isForced = (node, name) => | ||
(forced.has("*") || forced.has(name)) && (useConventionalGraduate ? node.prereleaseId : true); | ||
packages.forEach((node, name) => { | ||
if (candidates.has(node)) { | ||
log.verbose("updated", name); | ||
updates.push(node); | ||
} | ||
return collectPackages(packages, { | ||
isCandidate: (node, name) => isForced(node, name) || needsBump(node) || hasDiff(node), | ||
onInclude: name => log.verbose("updated", name), | ||
}); | ||
return updates; | ||
} |
{ | ||
"name": "@lerna/collect-updates", | ||
"version": "3.13.3", | ||
"version": "3.14.0", | ||
"description": "An internal Lerna tool", | ||
@@ -41,3 +41,3 @@ "keywords": [ | ||
}, | ||
"gitHead": "1496beb6278b001074d970bdd5869bb1f958d998" | ||
"gitHead": "39da145c67ea587457694f318f32f967b9d66ea9" | ||
} |
19695
10
213