Skip to content

Commit e4cedbb

Browse files
sumitaroraBrocco
authored andcommitted
fix(@angular/cli): fix issue of folder getting generated on dry run
Fixes: #6017
1 parent b59bccf commit e4cedbb

File tree

13 files changed

+163
-39
lines changed

13 files changed

+163
-39
lines changed

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

+9-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
import {CliConfig} from '../../models/config';
44

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

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

3239
this.dynamicPath = parsedPath;
3340
return parsedPath.name;

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

+8-2
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');
@@ -125,7 +125,13 @@ export default Blueprint.extend({
125125

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

130136
this.dynamicPath = parsedPath;
131137

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

+8-2
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');
@@ -78,7 +78,13 @@ export default Blueprint.extend({
7878

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

8389
this.dynamicPath = parsedPath;
8490

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');
@@ -20,7 +20,13 @@ export default Blueprint.extend({
2020

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

2531
this.dynamicPath = parsedPath;
2632
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

@@ -46,7 +46,13 @@ export default Blueprint.extend({
4646

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

5157
this.dynamicPath = parsedPath;
5258
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');
@@ -25,7 +25,13 @@ export default Blueprint.extend({
2525

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

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

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

+8-2
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');
@@ -58,7 +58,13 @@ export default Blueprint.extend({
5858
normalizeEntityName: function (entityName: string) {
5959
this.entityName = entityName;
6060
const appConfig = getAppFromConfig(this.options.app);
61-
const parsedPath = dynamicPathParser(this.project, entityName, appConfig);
61+
const dynamicPathOptions: DynamicPathOptions = {
62+
project: this.project,
63+
entityName,
64+
appConfig,
65+
dryRun: this.options.dryRun
66+
};
67+
const parsedPath = dynamicPathParser(dynamicPathOptions);
6268

6369
this.dynamicPath = parsedPath;
6470
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

@@ -72,7 +72,13 @@ export default Blueprint.extend({
7272

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

7783
this.dynamicPath = parsedPath;
7884
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

@@ -51,7 +51,13 @@ export default Blueprint.extend({
5151

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

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

packages/@angular/cli/ember-cli/lib/models/blueprint.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ Blueprint.prototype.install = function(options) {
517517
ui.writeLine(chalk.yellow('You specified the dry-run flag, so no' +
518518
' changes will be written.'));
519519
}
520-
520+
521521
this._normalizeEntityName(options.entity);
522522
this._checkForPod(options.verbose);
523523
this._checkInRepoAddonExists(options.inRepoAddon);

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

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

6-
export function dynamicPathParser(project: any, entityName: string, appConfig: any) {
7-
const projectRoot = project.root;
8-
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;
916
const appRoot = path.join(sourceDir, 'app');
1017
const cwd = process.env.PWD;
1118

1219
const rootPath = path.join(projectRoot, appRoot);
13-
let outputPath = path.join(rootPath, entityName);
20+
let outputPath = path.join(rootPath, options.entityName);
1421

15-
if (entityName.indexOf(path.sep) === 0) {
16-
outputPath = path.join(rootPath, entityName.substr(1));
22+
if (options.entityName.indexOf(path.sep) === 0) {
23+
outputPath = path.join(rootPath, options.entityName.substr(1));
1724
} else if (cwd.indexOf(rootPath) >= 0) {
18-
outputPath = path.join(cwd, entityName);
25+
outputPath = path.join(cwd, options.entityName);
1926
}
2027

2128
if (!fs.existsSync(outputPath)) {
@@ -38,15 +45,17 @@ export function dynamicPathParser(project: any, entityName: string, appConfig: a
3845
// Folder not found, create it, and return it
3946
const dasherizedPart = stringUtils.dasherize(part);
4047
const dasherizedDirName = path.join(tempPath, dasherizedPart);
41-
fs.mkdirpSync(dasherizedDirName);
48+
if (!options.dryRun) {
49+
fs.mkdirpSync(dasherizedDirName);
50+
}
4251
return dasherizedDirName;
4352

4453
}, parsedOutputPath.root);
4554
outputPath = path.join(newPath, parsedOutputPath.name);
4655
}
4756

4857
if (outputPath.indexOf(rootPath) < 0) {
49-
throw `Invalid path: "${entityName}" cannot be ` +
58+
throw `Invalid path: "${options.entityName}" cannot be ` +
5059
`above the "${appRoot}" directory`;
5160
}
5261

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 {
@@ -41,7 +41,13 @@ export function resolveModulePath(
4141
}
4242

4343
function buildFullPath(project: any, relativeModulePath: string, appConfig: any, projectRoot: any) {
44-
const parsedPath = dynamicPathParser(project, relativeModulePath, appConfig);
44+
const dynamicPathOptions: DynamicPathOptions = {
45+
project,
46+
entityName: relativeModulePath,
47+
appConfig,
48+
dryRun: false
49+
};
50+
const parsedPath = dynamicPathParser(dynamicPathOptions);
4551
const fullModulePath = path.join(projectRoot, parsedPath.dir, parsedPath.base);
4652

4753
return fullModulePath;

0 commit comments

Comments
 (0)