All files / src/migrations 4.5.0.ts

100% Statements 20/20
100% Branches 1/1
100% Functions 7/7
100% Lines 18/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 541x   1x 1x 1x   1x                                     1x 1x 1x 1x 2x 2x   1x 2x 1x             1x       1x     1x 1x        
import { join, normalize } from '@angular-devkit/core';
import { Rule, Tree } from '@angular-devkit/schematics';
import { addTslintRule, JSONFile } from '../utils/angular/json-utils';
import { getLibs, getWorkspace } from '../utils/backbase/package-utils';
import { tryRule } from './utils/rules';
 
const manualProcess = `
  ## Please update libs tslint.json files to include no-implicit-dependencies rule
 
  So your file should look like this:
  {
    ...
    "rules": {
      ...,
      "no-implicit-dependencies": {
        "severity": "warning",
        "options": true
      }
      ...
    },
    ...
    "linterOptions": {"exclude": ["test.ts"]}
  }
`;
 
export default function (): Rule {
  return tryRule(async (tree: Tree) => {
    const workspace = await getWorkspace(tree);
    const tsLintJsonPaths = getLibs(workspace)
      .map((name) => workspace.projects.get(name)!.root)
      .map((libRoot) => join(normalize(libRoot), 'tslint.json'));
 
    for (const tslintJsonPath of tsLintJsonPaths) {
      if (tree.exists(tslintJsonPath)) {
        addTslintRule(tree, tslintJsonPath, {
          name: 'no-implicit-dependencies',
          value: {
            severity: 'warning',
            options: true,
          },
        });
        excludeTestFileInLibs(tslintJsonPath);
      }
    }
 
    return () => tree;
 
    function excludeTestFileInLibs(tslintPath: string) {
      const tslint = new JSONFile(tree, tslintPath);
      tslint.modify(['linterOptions'], { exclude: ['test.ts'] });
    }
  }, manualProcess);
}