77 lines
2.0 KiB
TypeScript
77 lines
2.0 KiB
TypeScript
import { Tree } from '@angular-devkit/schematics';
|
|
import { readJsonInTree } from './ast-utils';
|
|
import { NxJson } from '../command-line/shared';
|
|
|
|
export const angularSchematicNames = [
|
|
'class',
|
|
'component',
|
|
'directive',
|
|
'guard',
|
|
'module',
|
|
'pipe',
|
|
'service'
|
|
];
|
|
|
|
export function getWorkspacePath(host: Tree) {
|
|
const possibleFiles = ['/angular.json', '/.angular.json'];
|
|
return possibleFiles.filter(path => host.exists(path))[0];
|
|
}
|
|
|
|
export function getNpmScope(host: Tree) {
|
|
return readJsonInTree<NxJson>(host, 'nx.json').npmScope;
|
|
}
|
|
|
|
export function parseTarget(targetString: string) {
|
|
const [project, target, config] = targetString.split(':');
|
|
return {
|
|
project,
|
|
target,
|
|
config
|
|
};
|
|
}
|
|
|
|
export function editTarget(targetString: string, callback) {
|
|
const parsedTarget = parseTarget(targetString);
|
|
return serializeTarget(callback(parsedTarget));
|
|
}
|
|
|
|
export function serializeTarget({ project, target, config }) {
|
|
return [project, target, config].filter(part => !!part).join(':');
|
|
}
|
|
|
|
export function replaceAppNameWithPath(
|
|
node: any,
|
|
appName: string,
|
|
root: string
|
|
): any {
|
|
if (typeof node === 'string') {
|
|
const matchPattern = new RegExp(
|
|
`([^a-z0-9]+(${appName}))|((${appName})[^a-z0-9:]+)`,
|
|
'gi'
|
|
);
|
|
if (!!node.match(matchPattern)) {
|
|
const r = node.replace(appName, root);
|
|
return r.startsWith('/apps') || r.startsWith('/libs')
|
|
? r.substring(1)
|
|
: r;
|
|
} else {
|
|
return node;
|
|
}
|
|
} else if (Array.isArray(node)) {
|
|
return node.map(j => replaceAppNameWithPath(j, appName, root));
|
|
} else if (typeof node === 'object' && node) {
|
|
const forbiddenPropertyList: string[] = ['prefix', 'builder']; // Some of the properties should not be renamed
|
|
return Object.keys(node).reduce(
|
|
(m, c) => (
|
|
(m[c] = !forbiddenPropertyList.includes(c)
|
|
? replaceAppNameWithPath(node[c], appName, root)
|
|
: node[c]),
|
|
m
|
|
),
|
|
{} as any
|
|
);
|
|
} else {
|
|
return node;
|
|
}
|
|
}
|