Skip to content
This repository has been archived by the owner on Dec 18, 2021. It is now read-only.

Commit

Permalink
feat(eslint-configs): installed the config packages
Browse files Browse the repository at this point in the history
  • Loading branch information
travi committed Oct 11, 2020
1 parent 1bf1e09 commit d16c79f
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 7 deletions.
15 changes: 12 additions & 3 deletions src/lift-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,22 @@ suite('lift', () => {

test('that results specific to js projects are lifted', async () => {
const scope = any.word();
const eslintLiftResults = {...any.simpleObject(), nextSteps: any.listOf(any.simpleObject)};
const eslintDevDependencies = any.listOf(any.word);
const eslintNextSteps = any.listOf(any.simpleObject);
const eslintLiftResults = {
...any.simpleObject(),
nextSteps: eslintNextSteps,
devDependencies: eslintDevDependencies
};
eslintLifter.default.withArgs({configs: eslintConfigs, scope}).resolves(eslintLiftResults);

const liftResults = await lift({projectRoot, results, configs: {eslint: {scope}}});

assert.deepEqual(liftResults, eslintLiftResults);
assert.calledWith(packageLifter.default, {projectRoot, scripts, tags, dependencies, devDependencies});
assert.deepEqual(liftResults, {nextSteps: eslintNextSteps});
assert.calledWith(
packageLifter.default,
{projectRoot, scripts, tags, dependencies, devDependencies, eslintDevDependencies}
);
});

test('that eslint-configs are not processed if configs are not provided', async () => {
Expand Down
13 changes: 11 additions & 2 deletions src/lift.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,20 @@ export default async function ({
}) {
info('Lifting JavaScript-specific details');

await liftPackage({projectRoot, scripts, tags, dependencies, devDependencies});
if (configIsProvidedForEslint(configs)) {
const {
nextSteps,
devDependencies: eslintDevDependencies
} = await liftEslint({configs: eslintConfigs, scope: configs.eslint.scope});

await liftPackage({projectRoot, scripts, tags, dependencies, devDependencies, eslintDevDependencies});

if (configIsProvidedForEslint(configs)) return liftEslint({configs: eslintConfigs, scope: configs.eslint.scope});
return {nextSteps};
}

warn('Config for ESLint not provided. Skipping ESLint configuration');

await liftPackage({projectRoot, scripts, tags, dependencies, devDependencies});

return {};
}
12 changes: 12 additions & 0 deletions src/package-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ suite('package.json lifter', () => {
suite('dependencies', () => {
const dependencies = any.listOf(any.word);
const devDependencies = any.listOf(any.word);
const eslintDevDependencies = any.listOf(any.word);

test('that dependencies and devDependencies are installed when provided', async () => {
await liftPackage({projectRoot, dependencies, devDependencies});
Expand All @@ -83,6 +84,17 @@ suite('package.json lifter', () => {
assert.calledWith(jsCore.installDependencies, devDependencies, jsCore.DEV_DEPENDENCY_TYPE);
});

test('that eslint devDependencies are added when provided', async () => {
await liftPackage({projectRoot, dependencies, devDependencies, eslintDevDependencies});

assert.calledWith(jsCore.installDependencies, dependencies, jsCore.PROD_DEPENDENCY_TYPE);
assert.calledWith(
jsCore.installDependencies,
[...devDependencies, ...eslintDevDependencies],
jsCore.DEV_DEPENDENCY_TYPE
);
});

test('that only dependencies are installed when no dev-dependencies are provided', async () => {
await liftPackage({projectRoot, dependencies});

Expand Down
9 changes: 7 additions & 2 deletions src/package.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {promises as fs} from 'fs';
import {info} from '@travi/cli-messages';
import {installDependencies, PROD_DEPENDENCY_TYPE, DEV_DEPENDENCY_TYPE} from '@form8ion/javascript-core';

export default async function ({projectRoot, scripts, tags, dependencies, devDependencies}) {
export default async function ({projectRoot, scripts, tags, dependencies, devDependencies, eslintDevDependencies}) {
if (scripts || tags) {
info('Updating `package.json`', {level: 'secondary'});

Expand All @@ -24,6 +24,11 @@ export default async function ({projectRoot, scripts, tags, dependencies, devDep
);
}

info('Installing dependencies');

await installDependencies(dependencies || [], PROD_DEPENDENCY_TYPE);
await installDependencies(devDependencies || [], DEV_DEPENDENCY_TYPE);
await installDependencies(
[...devDependencies || [], ...eslintDevDependencies || []],
DEV_DEPENDENCY_TYPE
);
}

0 comments on commit d16c79f

Please sign in to comment.