feat(providence-analytics): cli arguments extend-docs
chore: fix failing tests
This commit is contained in:
parent
54d06b9faa
commit
729966504b
5 changed files with 76 additions and 12 deletions
|
|
@ -33,6 +33,10 @@ function setQueryMethod(m) {
|
||||||
* @returns {string[]}
|
* @returns {string[]}
|
||||||
*/
|
*/
|
||||||
function pathsArrayFromCs(t, cwd = process.cwd()) {
|
function pathsArrayFromCs(t, cwd = process.cwd()) {
|
||||||
|
if (!t) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
return flatten(
|
return flatten(
|
||||||
t.split(',').map(t => {
|
t.split(',').map(t => {
|
||||||
if (t.startsWith('/')) {
|
if (t.startsWith('/')) {
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ const {
|
||||||
pathsArrayFromCollectionName,
|
pathsArrayFromCollectionName,
|
||||||
pathsArrayFromCs,
|
pathsArrayFromCs,
|
||||||
} = require('./cli-helpers.js');
|
} = require('./cli-helpers.js');
|
||||||
const { launchProvidenceWithExtendDocs } = require('./generate-extend-docs-data.js');
|
const extendDocsModule = require('./generate-extend-docs-data.js');
|
||||||
const { version } = require('../../package.json');
|
const { version } = require('../../package.json');
|
||||||
|
|
||||||
async function cli({ cwd, addProjectDependencyPaths } = {}) {
|
async function cli({ cwd, addProjectDependencyPaths } = {}) {
|
||||||
|
|
@ -111,12 +111,10 @@ async function cli({ cwd, addProjectDependencyPaths } = {}) {
|
||||||
providenceModule.providence(queryConfig, {
|
providenceModule.providence(queryConfig, {
|
||||||
gatherFilesConfig: {
|
gatherFilesConfig: {
|
||||||
extensions: commander.extensions,
|
extensions: commander.extensions,
|
||||||
// ...(commander.filteredTarget ? { excludeFolders: commander.filteredTarget } : {}),
|
|
||||||
filter: commander.whitelist,
|
filter: commander.whitelist,
|
||||||
},
|
},
|
||||||
gatherFilesConfigReference: {
|
gatherFilesConfigReference: {
|
||||||
extensions: commander.extensions,
|
extensions: commander.extensions,
|
||||||
// ...(commander.filteredTarget ? { excludeFolders: commander.filteredTarget } : {}),
|
|
||||||
filter: commander.whitelistReference,
|
filter: commander.whitelistReference,
|
||||||
},
|
},
|
||||||
debugEnabled: commander.debug,
|
debugEnabled: commander.debug,
|
||||||
|
|
@ -275,7 +273,17 @@ async function cli({ cwd, addProjectDependencyPaths } = {}) {
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
const prefixCfg = { from: options.prefixFrom, to: options.prefixTo };
|
const prefixCfg = { from: options.prefixFrom, to: options.prefixTo };
|
||||||
launchProvidenceWithExtendDocs(commander.referencePaths, prefixCfg, options.outputFolder);
|
extendDocsModule
|
||||||
|
.launchProvidenceWithExtendDocs({
|
||||||
|
referenceProjectPaths: commander.referencePaths,
|
||||||
|
prefixCfg,
|
||||||
|
outputFolder: options.outputFolder,
|
||||||
|
extensions: commander.referencePaths,
|
||||||
|
whitelist: commander.whitelist,
|
||||||
|
whitelistReference: commander.whitelistReference,
|
||||||
|
})
|
||||||
|
.then(() => resolveCli())
|
||||||
|
.catch(() => rejectCli());
|
||||||
});
|
});
|
||||||
|
|
||||||
commander
|
commander
|
||||||
|
|
|
||||||
|
|
@ -6,20 +6,31 @@ const { providence } = require('../program/providence.js');
|
||||||
const { QueryService } = require('../program/services/QueryService.js');
|
const { QueryService } = require('../program/services/QueryService.js');
|
||||||
const { LogService } = require('../program/services/LogService.js');
|
const { LogService } = require('../program/services/LogService.js');
|
||||||
|
|
||||||
async function launchProvidenceWithExtendDocs(referencePaths, prefixObj, outputFolder) {
|
async function launchProvidenceWithExtendDocs({
|
||||||
|
referenceProjectPaths,
|
||||||
|
prefixCfg,
|
||||||
|
outputFolder,
|
||||||
|
extensions,
|
||||||
|
whitelist,
|
||||||
|
whitelistReference,
|
||||||
|
}) {
|
||||||
const t0 = performance.now();
|
const t0 = performance.now();
|
||||||
|
|
||||||
const results = await providence(
|
const results = await providence(
|
||||||
QueryService.getQueryConfigFromAnalyzer('match-paths', { prefix: prefixObj }),
|
QueryService.getQueryConfigFromAnalyzer('match-paths', { prefix: prefixCfg }),
|
||||||
{
|
{
|
||||||
gatherFilesConfig: {
|
gatherFilesConfig: {
|
||||||
extensions: ['.js', '.html'],
|
extensions: extensions || ['.js'],
|
||||||
excludeFolders: ['coverage', 'test'],
|
filter: whitelist || ['!coverage', '!test'],
|
||||||
|
},
|
||||||
|
gatherFilesConfigReference: {
|
||||||
|
extensions: extensions || ['.js'],
|
||||||
|
filter: whitelistReference || ['!coverage', '!test'],
|
||||||
},
|
},
|
||||||
queryMethod: 'ast',
|
queryMethod: 'ast',
|
||||||
report: false,
|
report: false,
|
||||||
targetProjectPaths: [pathLib.resolve(process.cwd())],
|
targetProjectPaths: [pathLib.resolve(process.cwd())],
|
||||||
referenceProjectPaths: referencePaths,
|
referenceProjectPaths,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -165,7 +165,7 @@ class Analyzer {
|
||||||
`skipping ${LogService.pad(this.name, 16)} for ${
|
`skipping ${LogService.pad(this.name, 16)} for ${
|
||||||
this.identifier
|
this.identifier
|
||||||
}: (${reason})\n${cfg.targetProjectPath.replace(
|
}: (${reason})\n${cfg.targetProjectPath.replace(
|
||||||
'/Users/hu84jr/git/providence/providence-input-data/search-targets/',
|
`${process.cwd()}/providence-input-data/search-targets/`,
|
||||||
'',
|
'',
|
||||||
)}`,
|
)}`,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,10 @@ const {
|
||||||
} = require('../../test-helpers/mock-log-service-helpers.js');
|
} = require('../../test-helpers/mock-log-service-helpers.js');
|
||||||
|
|
||||||
const { QueryService } = require('../../src/program/services/QueryService.js');
|
const { QueryService } = require('../../src/program/services/QueryService.js');
|
||||||
const { LogService } = require('../../src/program/services/LogService.js');
|
|
||||||
|
|
||||||
const providenceModule = require('../../src/program/providence.js');
|
const providenceModule = require('../../src/program/providence.js');
|
||||||
|
const extendDocsModule = require('../../src/cli/generate-extend-docs-data.js');
|
||||||
|
|
||||||
const dummyAnalyzer = require('../../test-helpers/templates/analyzer-template.js');
|
const dummyAnalyzer = require('../../test-helpers/templates/analyzer-template.js');
|
||||||
const { cli } = require('../../src/cli/cli.js');
|
const { cli } = require('../../src/cli/cli.js');
|
||||||
const { pathsArrayFromCs } = require('../../src/cli/cli-helpers.js');
|
const { pathsArrayFromCs } = require('../../src/cli/cli-helpers.js');
|
||||||
|
|
@ -27,7 +28,6 @@ const rootDir = pathLib.resolve(__dirname, '../../');
|
||||||
|
|
||||||
describe('Providence CLI', () => {
|
describe('Providence CLI', () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
LogService.debugEnabled = true;
|
|
||||||
suppressNonCriticalLogs();
|
suppressNonCriticalLogs();
|
||||||
mockWriteToJson(queryResults);
|
mockWriteToJson(queryResults);
|
||||||
|
|
||||||
|
|
@ -142,6 +142,47 @@ describe('Providence CLI', () => {
|
||||||
describe('Query', () => {});
|
describe('Query', () => {});
|
||||||
describe('Search', () => {});
|
describe('Search', () => {});
|
||||||
describe('Manage', () => {});
|
describe('Manage', () => {});
|
||||||
|
describe('Extend docs', () => {
|
||||||
|
let extendDocsStub;
|
||||||
|
beforeEach(() => {
|
||||||
|
extendDocsStub = sinon.stub(extendDocsModule, 'launchProvidenceWithExtendDocs').returns(
|
||||||
|
new Promise(resolve => {
|
||||||
|
resolve();
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
extendDocsStub.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('allows configuration', async () => {
|
||||||
|
await runCli(
|
||||||
|
[
|
||||||
|
'extend-docs',
|
||||||
|
'-t /xyz',
|
||||||
|
'-r /xyz/x',
|
||||||
|
'--prefix-from pfrom --prefix-to pto',
|
||||||
|
'--output-folder /outp',
|
||||||
|
'--extensions bla',
|
||||||
|
'--whitelist wl --whitelist-reference wlr',
|
||||||
|
].join(' '),
|
||||||
|
rootDir,
|
||||||
|
);
|
||||||
|
expect(extendDocsStub.called).to.be.true;
|
||||||
|
expect(extendDocsStub.args[0][0]).to.eql({
|
||||||
|
referenceProjectPaths: ['/xyz/x'],
|
||||||
|
prefixCfg: {
|
||||||
|
from: 'pfrom',
|
||||||
|
to: 'pto',
|
||||||
|
},
|
||||||
|
outputFolder: '/outp',
|
||||||
|
extensions: ['/xyz/x'],
|
||||||
|
whitelist: [`${process.cwd()}/wl`],
|
||||||
|
whitelistReference: [`${process.cwd()}/wlr`],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue