angular-cli/addon/ng2/utilities/dynamic-path-parser.js
Mike Brocchi 5ee4f2b78d fix(generate): fix style and template url references
Dynamic paths for components were incorrectly generating paths for templates and styles
Fixes #340
2016-03-23 16:33:28 -04:00

35 lines
1.1 KiB
JavaScript

var path = require('path');
var process = require('process');
module.exports = function dynamicPathParser(project, entityName) {
var projectRoot = project.root;
var cwd = process.env.PWD;
var rootPath = path.join(projectRoot, 'src', 'app');
var outputPath = path.join(rootPath, entityName);
if (entityName.indexOf(path.sep) === 0) {
outputPath = path.join(rootPath, entityName.substr(1));
} else if (cwd.indexOf(rootPath) >= 0) {
outputPath = path.join(cwd, entityName);
} else if (cwd.indexOf(path.join(projectRoot, 'src')) >= 0
&& entityName.indexOf('app') === 0) {
outputPath = path.join(cwd, entityName);
} else if (cwd.indexOf(path.join(projectRoot, 'src')) >= 0) {
outputPath = path.join(cwd, 'app', entityName);
}
if (outputPath.indexOf(rootPath) < 0) {
throw `Invalid path: "${entityName}" cannot be ` +
`above the "${path.join('src', 'app')}" directory`;
}
var adjustedPath = outputPath.replace(rootPath, '');
var parsedPath = path.parse(adjustedPath);
parsedPath.dir = parsedPath.dir === path.sep ? '' : parsedPath.dir;
return parsedPath;
}