From 73badee5da06745ff58ee96f762d7240e9b4d6f1 Mon Sep 17 00:00:00 2001 From: Daniel Stockman Date: Sat, 5 Oct 2019 15:53:39 -0700 Subject: [PATCH] feat(filter-options): Use figgy-pudding in getFilteredPackages() --- .../lib/get-filtered-packages.js | 33 ++++++++++++++----- core/filter-options/package.json | 1 + package-lock.json | 1 + 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/core/filter-options/lib/get-filtered-packages.js b/core/filter-options/lib/get-filtered-packages.js index 2a0c6609f5..1e8f65cea1 100644 --- a/core/filter-options/lib/get-filtered-packages.js +++ b/core/filter-options/lib/get-filtered-packages.js @@ -1,18 +1,33 @@ "use strict"; -const log = require("npmlog"); +const npmlog = require("npmlog"); +const figgyPudding = require("figgy-pudding"); const collectUpdates = require("@lerna/collect-updates"); const filterPackages = require("@lerna/filter-packages"); module.exports = getFilteredPackages; -function getFilteredPackages(packageGraph, execOpts, options) { +const FilterConfig = figgyPudding({ + scope: {}, + ignore: {}, + private: {}, + since: {}, + continueIfNoMatch: {}, + excludeDependents: {}, + includeFilteredDependents: {}, + includeFilteredDependencies: {}, + log: { default: npmlog }, +}); + +function getFilteredPackages(packageGraph, execOpts, opts) { + const options = FilterConfig(opts); + if (options.scope) { - log.notice("filter", "including %j", options.scope); + options.log.notice("filter", "including %j", options.scope); } if (options.ignore) { - log.notice("filter", "excluding %j", options.ignore); + options.log.notice("filter", "excluding %j", options.ignore); } let chain = Promise.resolve(); @@ -28,14 +43,14 @@ function getFilteredPackages(packageGraph, execOpts, options) { ); if (options.since !== undefined) { - log.notice("filter", "changed since %j", options.since); + options.log.notice("filter", "changed since %j", options.since); if (options.excludeDependents) { - log.notice("filter", "excluding dependents"); + options.log.notice("filter", "excluding dependents"); } chain = chain.then(filteredPackages => - Promise.resolve(collectUpdates(filteredPackages, packageGraph, execOpts, options)).then(updates => { + Promise.resolve(collectUpdates(filteredPackages, packageGraph, execOpts, opts)).then(updates => { const updated = new Set(updates.map(({ pkg }) => pkg.name)); return filteredPackages.filter(pkg => updated.has(pkg.name)); @@ -44,13 +59,13 @@ function getFilteredPackages(packageGraph, execOpts, options) { } if (options.includeFilteredDependents) { - log.notice("filter", "including filtered dependents"); + options.log.notice("filter", "including filtered dependents"); chain = chain.then(filteredPackages => packageGraph.addDependents(filteredPackages)); } if (options.includeFilteredDependencies) { - log.notice("filter", "including filtered dependencies"); + options.log.notice("filter", "including filtered dependencies"); chain = chain.then(filteredPackages => packageGraph.addDependencies(filteredPackages)); } diff --git a/core/filter-options/package.json b/core/filter-options/package.json index ad3b9b64eb..4d3149d59c 100644 --- a/core/filter-options/package.json +++ b/core/filter-options/package.json @@ -35,6 +35,7 @@ "@lerna/collect-updates": "file:../../utils/collect-updates", "@lerna/filter-packages": "file:../../utils/filter-packages", "dedent": "^0.7.0", + "figgy-pudding": "^3.5.1", "npmlog": "^4.1.2" } } diff --git a/package-lock.json b/package-lock.json index 6d5b0c5e9a..d9941f5f1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -984,6 +984,7 @@ "@lerna/collect-updates": "file:utils/collect-updates", "@lerna/filter-packages": "file:utils/filter-packages", "dedent": "^0.7.0", + "figgy-pudding": "^3.5.1", "npmlog": "^4.1.2" } },