Skip to content

Commit 2294dd5

Browse files
committed
fix(@angular/cli): adding dynamic parser options
1 parent 0fe767a commit 2294dd5

File tree

12 files changed

+160
-40
lines changed

12 files changed

+160
-40
lines changed

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

Lines changed: 9 additions & 3 deletions
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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { oneLine } from 'common-tags';
55
import { NodeHost } from '../../lib/ast-tools';
66
import { CliConfig } from '../../models/config';
77
import { getAppFromConfig } from '../../utilities/app-utils';
8-
import { dynamicPathParser } from '../../utilities/dynamic-path-parser';
8+
import { dynamicPathParser, DynamicPathOptions } from '../../utilities/dynamic-path-parser';
99
import { resolveModulePath } from '../../utilities/resolve-module-file';
1010

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

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

129135
this.dynamicPath = parsedPath;
130136

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { NodeHost } from '../../lib/ast-tools';
55
import { CliConfig } from '../../models/config';
66
import { getAppFromConfig } from '../../utilities/app-utils';
77
import { resolveModulePath } from '../../utilities/resolve-module-file';
8-
import { dynamicPathParser } from '../../utilities/dynamic-path-parser';
8+
import { dynamicPathParser, DynamicPathOptions } from '../../utilities/dynamic-path-parser';
99

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

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

8288
this.dynamicPath = parsedPath;
8389

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

Lines changed: 8 additions & 2 deletions
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

Lines changed: 8 additions & 2 deletions
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

Lines changed: 8 additions & 2 deletions
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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { NodeHost } from '../../lib/ast-tools';
55
import { CliConfig } from '../../models/config';
66
import { getAppFromConfig } from '../../utilities/app-utils';
77
import { resolveModulePath } from '../../utilities/resolve-module-file';
8-
import { dynamicPathParser } from '../../utilities/dynamic-path-parser';
8+
import { dynamicPathParser, DynamicPathOptions } from '../../utilities/dynamic-path-parser';
99

1010
const stringUtils = require('ember-cli-string-utils');
1111
const Blueprint = require('../../ember-cli/lib/models/blueprint');
@@ -57,7 +57,13 @@ export default Blueprint.extend({
5757
normalizeEntityName: function (entityName: string) {
5858
this.entityName = entityName;
5959
const appConfig = getAppFromConfig(this.options.app);
60-
const parsedPath = dynamicPathParser(this.project, entityName, appConfig, this.options.dryRun);
60+
const dynamicPathOptions: DynamicPathOptions = {
61+
project: this.project,
62+
entityName,
63+
appConfig,
64+
dryRun: this.options.dryRun
65+
};
66+
const parsedPath = dynamicPathParser(dynamicPathOptions);
6167

6268
this.dynamicPath = parsedPath;
6369
return parsedPath.name;

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

Lines changed: 8 additions & 2 deletions
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

Lines changed: 8 additions & 2 deletions
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

Lines changed: 16 additions & 10 deletions
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

Lines changed: 8 additions & 2 deletions
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)