Skip to content

Commit

Permalink
feat: add search-sub-deps flag
Browse files Browse the repository at this point in the history
Only search sub deps when flag is passed.
Don't ever include dev dependencies of sub-deps.
  • Loading branch information
stdavis committed Jan 8, 2021
1 parent 8575ea8 commit e1bc443
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 13 deletions.
19 changes: 17 additions & 2 deletions __mocks__/package-json.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@ module.exports = (packageName) => {
dep1: {
repository: {
url: 'https://github.com/stdavis/a-good-module'
},
dependencies: {
subDep: '1.1.1'
},
devDependencies: {
skip: '0.0.0'
}
},
dep2: {
Expand All @@ -12,12 +18,21 @@ module.exports = (packageName) => {
},
devDep1: {},
devDep2: {
repository: {}
repository: {},
dependencies: {
subDep2: '2.2.2'
}
},
noRepoUrl: {
repository: {}
},
noRepo: {}
noRepo: {},
subDep: {
repository: {}
},
subDep2: {
repository: {}
}
};

return packages[packageName];
Expand Down
8 changes: 7 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class GoodSamaritanCommand extends Command {

const token = await getToken(flags['reset-token']);

const dependencies = await getCurrentProjectDependencies();
const dependencies = await getCurrentProjectDependencies(flags['search-sub-deps']);

const issues = await getIssues(dependencies, token, flags['labels']);

Expand All @@ -37,6 +37,12 @@ GoodSamaritanCommand.flags = {
Labels are specified as a comma-separated list. For example: "help wanted,good first issue". Only issues that have *all* of the labels will be shown.`,
default: 'help wanted'
}),
'search-sub-deps': flags.boolean({
char: 's',
description: `[default: false] search sub-dependencies (dependencies of your project's dependencies)
Note: devDependencies of sub-dependencies are not searched.`,
default: false
})
};

Expand Down
21 changes: 11 additions & 10 deletions src/packages.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,24 @@ const readPackage = require('read-pkg');
const packageInfo = require('package-json');


const getCurrentProjectDependencies = async () => {
const getCurrentProjectDependencies = async (searchSubDeps=false) => {
const packageJson = await readPackage();

let dependencies = {
...packageJson.dependencies,
...packageJson.devDependencies
};

for (let packageName in dependencies) {
const subPackageDependencies = await getDependencies(packageName, dependencies[packageName]);
if (searchSubDeps) {
for (let packageName in dependencies) {
const subPackageDependencies = await getDependencies(packageName, dependencies[packageName]);

dependencies = {
...subPackageDependencies,
// preference for root-level dependencies
...dependencies
};
dependencies = {
...subPackageDependencies,
// preference for root-level dependencies
...dependencies
};
}
}

return dependencies;
Expand All @@ -31,8 +33,7 @@ const getDependencies = async (packageName, version) => {
});

return {
...info.dependencies,
...info.devDependencies
...info.dependencies
};
};

Expand Down
12 changes: 12 additions & 0 deletions src/packages.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,17 @@ describe('packages', () => {

expect(await getCurrentProjectDependencies()).toEqual(expected);
});
it('searches sub-deps', async () => {
const expected = {
dep1: '^1.0.1',
dep2: '1.0.2',
devDep1: '^5.0.0',
devDep2: '3.0.0',
subDep: '1.1.1',
subDep2: '2.2.2'
};

expect(await getCurrentProjectDependencies(true)).toEqual(expected);
});
});
});

0 comments on commit e1bc443

Please sign in to comment.