Skip to content

Commit 7aaa396

Browse files
committed
fix(@angular/cli): adding dynamic parser options
1 parent fb26b15 commit 7aaa396

File tree

12 files changed

+160
-40
lines changed

12 files changed

+160
-40
lines changed

packages/@angular/cli/blueprints/class/index.ts

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {getAppFromConfig} from '../../utilities/app-utils';
2-
import {dynamicPathParser} from '../../utilities/dynamic-path-parser';
2+
import {dynamicPathParser, DynamicPathOptions} from '../../utilities/dynamic-path-parser';
33
import {CliConfig} from '../../models/config';
44

55
const stringUtils = require('ember-cli-string-utils');
@@ -26,8 +26,14 @@ export default Blueprint.extend({
2626

2727
normalizeEntityName: function (entityName: string) {
2828
const appConfig = getAppFromConfig(this.options.app);
29-
const parsedPath =
30-
dynamicPathParser(this.project, entityName.split('.')[0], appConfig, this.options.dryRun);
29+
const dynamicPathOptions: DynamicPathOptions = {
30+
project: this.project,
31+
entityName: entityName.split('.')[0],
32+
appConfig,
33+
dryRun: this.options.dryRun
34+
};
35+
36+
const parsedPath = dynamicPathParser(dynamicPathOptions);
3137

3238
this.dynamicPath = parsedPath;
3339
return parsedPath.name;

packages/@angular/cli/blueprints/component/index.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as path from 'path';
44
import { NodeHost } from '../../lib/ast-tools';
55
import { CliConfig } from '../../models/config';
66
import { getAppFromConfig } from '../../utilities/app-utils';
7-
import { dynamicPathParser } from '../../utilities/dynamic-path-parser';
7+
import { dynamicPathParser, DynamicPathOptions } from '../../utilities/dynamic-path-parser';
88
import { resolveModulePath } from '../../utilities/resolve-module-file';
99

1010
const Blueprint = require('../../ember-cli/lib/models/blueprint');
@@ -123,7 +123,13 @@ export default Blueprint.extend({
123123

124124
normalizeEntityName: function (entityName: string) {
125125
const appConfig = getAppFromConfig(this.options.app);
126-
const parsedPath = dynamicPathParser(this.project, entityName, appConfig, this.options.dryRun);
126+
const dynamicPathOptions: DynamicPathOptions = {
127+
project: this.project,
128+
entityName,
129+
appConfig,
130+
dryRun: this.options.dryRun
131+
};
132+
const parsedPath = dynamicPathParser(dynamicPathOptions);
127133

128134
this.dynamicPath = parsedPath;
129135

packages/@angular/cli/blueprints/directive/index.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { NodeHost } from '../../lib/ast-tools';
44
import { CliConfig } from '../../models/config';
55
import { getAppFromConfig } from '../../utilities/app-utils';
66
import { resolveModulePath } from '../../utilities/resolve-module-file';
7-
import { dynamicPathParser } from '../../utilities/dynamic-path-parser';
7+
import { dynamicPathParser, DynamicPathOptions } from '../../utilities/dynamic-path-parser';
88

99
const stringUtils = require('ember-cli-string-utils');
1010
const astUtils = require('../../utilities/ast-utils');
@@ -76,7 +76,13 @@ export default Blueprint.extend({
7676

7777
normalizeEntityName: function (entityName: string) {
7878
const appConfig = getAppFromConfig(this.options.app);
79-
const parsedPath = dynamicPathParser(this.project, entityName, appConfig, this.options.dryRun);
79+
const dynamicPathOptions: DynamicPathOptions = {
80+
project: this.project,
81+
entityName,
82+
appConfig,
83+
dryRun: this.options.dryRun
84+
};
85+
const parsedPath = dynamicPathParser(dynamicPathOptions);
8086

8187
this.dynamicPath = parsedPath;
8288

packages/@angular/cli/blueprints/enum/index.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {getAppFromConfig} from '../../utilities/app-utils';
2-
import {dynamicPathParser} from '../../utilities/dynamic-path-parser';
2+
import {dynamicPathParser, DynamicPathOptions} from '../../utilities/dynamic-path-parser';
33

44
const stringUtils = require('ember-cli-string-utils');
55
const Blueprint = require('../../ember-cli/lib/models/blueprint');
@@ -19,7 +19,13 @@ export default Blueprint.extend({
1919

2020
normalizeEntityName: function (entityName: string) {
2121
const appConfig = getAppFromConfig(this.options.app);
22-
const parsedPath = dynamicPathParser(this.project, entityName, appConfig, this.options.dryRun);
22+
const dynamicPathOptions: DynamicPathOptions = {
23+
project: this.project,
24+
entityName,
25+
appConfig,
26+
dryRun: this.options.dryRun
27+
};
28+
const parsedPath = dynamicPathParser(dynamicPathOptions);
2329

2430
this.dynamicPath = parsedPath;
2531
return parsedPath.name;

packages/@angular/cli/blueprints/guard/index.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as path from 'path';
33
import { oneLine } from 'common-tags';
44
import { NodeHost } from '../../lib/ast-tools';
55
import { CliConfig } from '../../models/config';
6-
import { dynamicPathParser } from '../../utilities/dynamic-path-parser';
6+
import { dynamicPathParser, DynamicPathOptions } from '../../utilities/dynamic-path-parser';
77
import { getAppFromConfig } from '../../utilities/app-utils';
88
import { resolveModulePath } from '../../utilities/resolve-module-file';
99

@@ -45,7 +45,13 @@ export default Blueprint.extend({
4545

4646
normalizeEntityName: function (entityName: string) {
4747
const appConfig = getAppFromConfig(this.options.app);
48-
const parsedPath = dynamicPathParser(this.project, entityName, appConfig, this.options.dryRun);
48+
const dynamicPathOptions: DynamicPathOptions = {
49+
project: this.project,
50+
entityName,
51+
appConfig,
52+
dryRun: this.options.dryRun
53+
};
54+
const parsedPath = dynamicPathParser(dynamicPathOptions);
4955

5056
this.dynamicPath = parsedPath;
5157
return parsedPath.name;

packages/@angular/cli/blueprints/interface/index.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {CliConfig} from '../../models/config';
22
import {getAppFromConfig} from '../../utilities/app-utils';
3-
import {dynamicPathParser} from '../../utilities/dynamic-path-parser';
3+
import {dynamicPathParser, DynamicPathOptions} from '../../utilities/dynamic-path-parser';
44

55
const stringUtils = require('ember-cli-string-utils');
66
const Blueprint = require('../../ember-cli/lib/models/blueprint');
@@ -24,7 +24,13 @@ export default Blueprint.extend({
2424

2525
normalizeEntityName: function (entityName: string) {
2626
const appConfig = getAppFromConfig(this.options.app);
27-
const parsedPath = dynamicPathParser(this.project, entityName, appConfig, this.options.dryRun);
27+
const dynamicPathOptions: DynamicPathOptions = {
28+
project: this.project,
29+
entityName,
30+
appConfig,
31+
dryRun: this.options.dryRun
32+
};
33+
const parsedPath = dynamicPathParser(dynamicPathOptions);
2834

2935
this.dynamicPath = parsedPath;
3036
return parsedPath.name;

packages/@angular/cli/blueprints/module/index.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {CliConfig} from '../../models/config';
22
import {getAppFromConfig} from '../../utilities/app-utils';
3-
import {dynamicPathParser} from '../../utilities/dynamic-path-parser';
3+
import {dynamicPathParser, DynamicPathOptions} from '../../utilities/dynamic-path-parser';
44

55
const path = require('path');
66
const Blueprint = require('../../ember-cli/lib/models/blueprint');
@@ -38,7 +38,13 @@ export default Blueprint.extend({
3838
normalizeEntityName: function (entityName: string) {
3939
this.entityName = entityName;
4040
const appConfig = getAppFromConfig(this.options.app);
41-
const parsedPath = dynamicPathParser(this.project, entityName, appConfig, this.options.dryRun);
41+
const dynamicPathOptions: DynamicPathOptions = {
42+
project: this.project,
43+
entityName,
44+
appConfig,
45+
dryRun: this.options.dryRun
46+
};
47+
const parsedPath = dynamicPathParser(dynamicPathOptions);
4248

4349
this.dynamicPath = parsedPath;
4450
return parsedPath.name;

packages/@angular/cli/blueprints/pipe/index.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as chalk from 'chalk';
22
import * as path from 'path';
33
import { NodeHost } from '../../lib/ast-tools';
44
import { CliConfig } from '../../models/config';
5-
import { dynamicPathParser } from '../../utilities/dynamic-path-parser';
5+
import { dynamicPathParser, DynamicPathOptions } from '../../utilities/dynamic-path-parser';
66
import { getAppFromConfig } from '../../utilities/app-utils';
77
import { resolveModulePath } from '../../utilities/resolve-module-file';
88

@@ -71,7 +71,13 @@ export default Blueprint.extend({
7171

7272
normalizeEntityName: function (entityName: string) {
7373
const appConfig = getAppFromConfig(this.options.app);
74-
const parsedPath = dynamicPathParser(this.project, entityName, appConfig, this.options.dryRun);
74+
const dynamicPathOptions: DynamicPathOptions = {
75+
project: this.project,
76+
entityName,
77+
appConfig,
78+
dryRun: this.options.dryRun
79+
};
80+
const parsedPath = dynamicPathParser(dynamicPathOptions);
7581

7682
this.dynamicPath = parsedPath;
7783
return parsedPath.name;

packages/@angular/cli/blueprints/service/index.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as path from 'path';
33
import { oneLine } from 'common-tags';
44
import { NodeHost } from '../../lib/ast-tools';
55
import { CliConfig } from '../../models/config';
6-
import { dynamicPathParser } from '../../utilities/dynamic-path-parser';
6+
import { dynamicPathParser, DynamicPathOptions } from '../../utilities/dynamic-path-parser';
77
import { getAppFromConfig } from '../../utilities/app-utils';
88
import { resolveModulePath } from '../../utilities/resolve-module-file';
99

@@ -50,7 +50,13 @@ export default Blueprint.extend({
5050

5151
normalizeEntityName: function (entityName: string) {
5252
const appConfig = getAppFromConfig(this.options.app);
53-
const parsedPath = dynamicPathParser(this.project, entityName, appConfig, this.options.dryRun);
53+
const dynamicPathOptions: DynamicPathOptions = {
54+
project: this.project,
55+
entityName,
56+
appConfig,
57+
dryRun: this.options.dryRun
58+
};
59+
const parsedPath = dynamicPathParser(dynamicPathOptions);
5460

5561
this.dynamicPath = parsedPath;
5662
return parsedPath.name;

packages/@angular/cli/utilities/dynamic-path-parser.ts

+16-10
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,26 @@ import * as process from 'process';
33
import * as fs from 'fs';
44
const stringUtils = require('ember-cli-string-utils');
55

6-
export function dynamicPathParser(project: any, entityName: string, appConfig: any,
7-
dryRun: boolean) {
8-
const projectRoot = project.root;
9-
const sourceDir = appConfig.root;
6+
export interface DynamicPathOptions {
7+
project: any;
8+
entityName: string;
9+
appConfig: any;
10+
dryRun: boolean;
11+
}
12+
13+
export function dynamicPathParser(options: DynamicPathOptions) {
14+
const projectRoot = options.project.root;
15+
const sourceDir = options.appConfig.root;
1016
const appRoot = path.join(sourceDir, 'app');
1117
const cwd = process.env.PWD;
1218

1319
const rootPath = path.join(projectRoot, appRoot);
14-
let outputPath = path.join(rootPath, entityName);
20+
let outputPath = path.join(rootPath, options.entityName);
1521

16-
if (entityName.indexOf(path.sep) === 0) {
17-
outputPath = path.join(rootPath, entityName.substr(1));
22+
if (options.entityName.indexOf(path.sep) === 0) {
23+
outputPath = path.join(rootPath, options.entityName.substr(1));
1824
} else if (cwd.indexOf(rootPath) >= 0) {
19-
outputPath = path.join(cwd, entityName);
25+
outputPath = path.join(cwd, options.entityName);
2026
}
2127

2228
if (!fs.existsSync(outputPath)) {
@@ -39,7 +45,7 @@ export function dynamicPathParser(project: any, entityName: string, appConfig: a
3945
// Folder not found, create it, and return it
4046
const dasherizedPart = stringUtils.dasherize(part);
4147
const dasherizedDirName = path.join(tempPath, dasherizedPart);
42-
if (!dryRun) {
48+
if (!options.dryRun) {
4349
fs.mkdirSync(dasherizedDirName);
4450
}
4551
return dasherizedDirName;
@@ -49,7 +55,7 @@ export function dynamicPathParser(project: any, entityName: string, appConfig: a
4955
}
5056

5157
if (outputPath.indexOf(rootPath) < 0) {
52-
throw `Invalid path: "${entityName}" cannot be ` +
58+
throw `Invalid path: "${options.entityName}" cannot be ` +
5359
`above the "${appRoot}" directory`;
5460
}
5561

packages/@angular/cli/utilities/resolve-module-file.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as path from 'path';
22
import * as fs from 'fs';
3-
import { dynamicPathParser } from './dynamic-path-parser';
3+
import { dynamicPathParser, DynamicPathOptions } from './dynamic-path-parser';
44

55
export function resolveModulePath(
66
moduleNameFromFlag: string, project: any, projectRoot: any, appConfig: any): string {
@@ -39,7 +39,13 @@ export function resolveModulePath(
3939
}
4040

4141
function buildFullPath(project: any, relativeModulePath: string, appConfig: any, projectRoot: any) {
42-
const parsedPath = dynamicPathParser(project, relativeModulePath, appConfig, false);
42+
const dynamicPathOptions: DynamicPathOptions = {
43+
project,
44+
entityName: relativeModulePath,
45+
appConfig,
46+
dryRun: false
47+
};
48+
const parsedPath = dynamicPathParser(dynamicPathOptions);
4349
const fullModulePath = path.join(projectRoot, parsedPath.dir, parsedPath.base);
4450

4551
return fullModulePath;

0 commit comments

Comments
 (0)