feat(schematics): add migration for karma app check
This commit is contained in:
parent
c747a4a0a0
commit
8fd05f3e45
@ -0,0 +1,44 @@
|
||||
import * as fs from 'fs';
|
||||
import * as ts from 'typescript';
|
||||
import { getSourceNodes } from '@schematics/angular/utility/ast-utils';
|
||||
import { stripIndents } from '@angular-devkit/core/src/utils/literals';
|
||||
|
||||
export default {
|
||||
description: 'Add makeSureNoAppIsSelected(); to karma conf',
|
||||
run: async () => {
|
||||
const contents = fs.readFileSync('karma.conf.js').toString();
|
||||
const sourceFile = ts.createSourceFile('karma.conf.js', contents, ts.ScriptTarget.Latest);
|
||||
const nodes = getSourceNodes(sourceFile);
|
||||
const isPresent = nodes
|
||||
.filter(ts.isCallExpression)
|
||||
.filter((callExpr: ts.CallExpression) => ts.isIdentifier(callExpr.expression))
|
||||
.some((callExpr: ts.CallExpression) => {
|
||||
const identifier = callExpr.expression as ts.Identifier;
|
||||
return identifier.escapedText === 'makeSureNoAppIsSelected';
|
||||
});
|
||||
|
||||
if (isPresent) {
|
||||
return;
|
||||
}
|
||||
|
||||
const snippet = stripIndents`
|
||||
const { makeSureNoAppIsSelected } = require('@nrwl/schematics/src/utils/cli-config-utils');
|
||||
// Nx only supports running unit tests for all apps and libs.
|
||||
makeSureNoAppIsSelected();
|
||||
`;
|
||||
|
||||
const karmaComment = stripIndents`
|
||||
// Karma configuration file, see link for more information
|
||||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
||||
`;
|
||||
|
||||
let res: string;
|
||||
if (contents.includes(karmaComment)) {
|
||||
res = contents.replace(karmaComment, karmaComment + '\n\n' + snippet);
|
||||
} else {
|
||||
res = snippet + '\n\n' + contents;
|
||||
}
|
||||
|
||||
fs.writeFileSync('karma.conf.js', res);
|
||||
}
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user