From b78116091929407b304b5ecc7523f2a899e63802 Mon Sep 17 00:00:00 2001 From: Thijs Louisse Date: Tue, 21 Jul 2020 23:50:26 +0200 Subject: [PATCH] chore(providence-analytics): add match-import example content --- packages/providence-analytics/package.json | 1 + .../providence-analytics/providence.conf.js | 46 ++++++++++++++----- .../src/program/services/InputDataService.js | 2 +- 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/packages/providence-analytics/package.json b/packages/providence-analytics/package.json index 3ded48d03..b7fae15c6 100644 --- a/packages/providence-analytics/package.json +++ b/packages/providence-analytics/package.json @@ -20,6 +20,7 @@ ], "scripts": { "dashboard": "node ./dashboard/src/server.js --serve-from-package-root", + "match-lion-imports": "npm run providence analyze match-imports --search-target-collection @lion-targets --reference-collection @lion-references", "providence": "node --max-old-space-size=8192 ./src/cli/index.js", "test:node": "mocha './test-node/**/*.test.js'", "test:node:e2e": "mocha './test-node/program/**/*.e2e.js' --timeout 60000", diff --git a/packages/providence-analytics/providence.conf.js b/packages/providence-analytics/providence.conf.js index 356a94291..e59652ac0 100644 --- a/packages/providence-analytics/providence.conf.js +++ b/packages/providence-analytics/providence.conf.js @@ -1,13 +1,41 @@ +const pathLib = require('path'); +const fs = require('fs'); + // This file is read by dashboard and cli and needs to be present under process.cwd() // It mainly serves as an example and it allows to run the dashboard locally // from within this repo. +/** + * @returns {string[]} + */ +function getAllLionScopedPackagePaths() { + const rootPath = pathLib.resolve(__dirname, '../../packages'); + const filesAndDirs = fs.readdirSync(rootPath); + const packages = filesAndDirs.filter(f => { + const filePath = pathLib.join(rootPath, f); + if (fs.lstatSync(filePath).isDirectory()) { + let pkgJson; + try { + pkgJson = JSON.parse(fs.readFileSync(pathLib.resolve(filePath, './package.json'))); + // eslint-disable-next-line no-empty + } catch (_) { + return false; + } + return pkgJson.name && pkgJson.name.startsWith('@lion/'); + } + return false; + }); + return packages.map(p => pathLib.join(rootPath, p)); +} + +const lionScopedPackagePaths = getAllLionScopedPackagePaths(); + const providenceConfig = { metaConfig: { categoryConfig: [ { // This is the name found in package.json - project: 'lion-based-ui', + project: '@lion/overlays', majorVersion: 1, // These conditions will be run on overy filePath categories: { @@ -25,20 +53,16 @@ const providenceConfig = { ], }, // By predefening groups, we can do a query for programs/collections... - // Select via " providence analyze -t 'exampleCollection' " + // Select via " providence analyze --search-target-collection 'exampleCollection' " searchTargetCollections: { - exampleCollection: [ - './providence-input-data/search-targets/example-project-a', - './providence-input-data/search-targets/example-project-b', - ], + '@lion-targets': lionScopedPackagePaths, // ... }, referenceCollections: { - // Our products - 'lion-based-ui': [ - './providence-input-data/references/lion-based-ui', - './providence-input-data/references/lion-based-ui-labs', - ], + // Usually the references are different from the targets. + // In this demo file, we test @lion usage amongst itself + // Select via " providence analyze --reference-collection 'exampleCollection' " + '@lion-references': lionScopedPackagePaths, }, }; diff --git a/packages/providence-analytics/src/program/services/InputDataService.js b/packages/providence-analytics/src/program/services/InputDataService.js index 21bb38479..d29799275 100644 --- a/packages/providence-analytics/src/program/services/InputDataService.js +++ b/packages/providence-analytics/src/program/services/InputDataService.js @@ -337,7 +337,7 @@ class InputDataService { try { // eslint-disable-next-line import/no-dynamic-require, global-require return require(`${process.cwd()}/providence.conf.js`); - } catch (_) { + } catch (e) { return null; } }