ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
93 lines • 3.52 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
const core_1 = require("@angular-devkit/core");
/**
* Find the module referred by a set of options passed to the schematics.
*/
function findModuleFromOptions(host, options) {
if (options.hasOwnProperty('skipImport') && options.skipImport) {
return undefined;
}
if (!options.module) {
const pathToCheck = (options.path || '')
+ (options.flat ? '' : '/' + core_1.strings.dasherize(options.name));
return core_1.normalize(findModule(host, pathToCheck));
}
else {
const modulePath = core_1.normalize('/' + (options.path) + '/' + options.module);
const moduleBaseName = core_1.normalize(modulePath).split('/').pop();
if (host.exists(modulePath)) {
return core_1.normalize(modulePath);
}
else if (host.exists(modulePath + '.ts')) {
return core_1.normalize(modulePath + '.ts');
}
else if (host.exists(modulePath + '.module.ts')) {
return core_1.normalize(modulePath + '.module.ts');
}
else if (host.exists(modulePath + '/' + moduleBaseName + '.module.ts')) {
return core_1.normalize(modulePath + '/' + moduleBaseName + '.module.ts');
}
else {
throw new Error('Specified module does not exist');
}
}
}
exports.findModuleFromOptions = findModuleFromOptions;
/**
* Function to find the "closest" module to a generated file's path.
*/
function findModule(host, generateDir) {
let dir = host.getDir('/' + generateDir);
const moduleRe = /\.module\.ts$/;
const routingModuleRe = /-routing\.module\.ts/;
while (dir) {
const matches = dir.subfiles.filter(p => moduleRe.test(p) && !routingModuleRe.test(p));
if (matches.length == 1) {
return core_1.join(dir.path, matches[0]);
}
else if (matches.length > 1) {
throw new Error('More than one module matches. Use skip-import option to skip importing '
+ 'the component into the closest module.');
}
dir = dir.parent;
}
throw new Error('Could not find an NgModule. Use the skip-import '
+ 'option to skip importing in NgModule.');
}
exports.findModule = findModule;
/**
* Build a relative path from one file path to another file path.
*/
function buildRelativePath(from, to) {
from = core_1.normalize(from);
to = core_1.normalize(to);
// Convert to arrays.
const fromParts = from.split('/');
const toParts = to.split('/');
// Remove file names (preserving destination)
fromParts.pop();
const toFileName = toParts.pop();
const relativePath = core_1.relative(core_1.normalize(fromParts.join('/')), core_1.normalize(toParts.join('/')));
let pathPrefix = '';
// Set the path prefix for same dir or child dir, parent dir starts with `..`
if (!relativePath) {
pathPrefix = '.';
}
else if (!relativePath.startsWith('.')) {
pathPrefix = `./`;
}
if (pathPrefix && !pathPrefix.endsWith('/')) {
pathPrefix += '/';
}
return pathPrefix + (relativePath ? relativePath + '/' : '') + toFileName;
}
exports.buildRelativePath = buildRelativePath;
//# sourceMappingURL=find-module.js.map
;