Skip to content

Commit ef37d0f

Browse files
committed
refactor(@angular/cli): consolidate config reading logic
1 parent a6289f8 commit ef37d0f

File tree

22 files changed

+63
-98
lines changed

22 files changed

+63
-98
lines changed

packages/@angular/cli/addon/index.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,6 @@ const path = require('path');
77
module.exports = {
88
name: 'ng',
99

10-
config: function () {
11-
this.project.ngConfigObj = this.project.ngConfigObj || config.CliConfig.fromProject();
12-
this.project.ngConfig = this.project.ngConfig || (
13-
this.project.ngConfigObj && this.project.ngConfigObj.config);
14-
},
15-
1610
blueprintsPath: function () {
1711
return path.join(__dirname, '../blueprints');
1812
},

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,7 @@ export default Blueprint.extend({
2424
],
2525

2626
normalizeEntityName: function (entityName: string) {
27-
const cliConfig = CliConfig.fromProject();
28-
const ngConfig = cliConfig && cliConfig.config;
29-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
27+
const appConfig = getAppFromConfig(this.options.app);
3028
const parsedPath = dynamicPathParser(this.project, entityName.split('.')[0], appConfig);
3129

3230
this.dynamicPath = parsedPath;
@@ -44,10 +42,9 @@ export default Blueprint.extend({
4442
this.fileName += '.' + classType.toLowerCase();
4543
}
4644

47-
const cliConfig = CliConfig.fromProject();
4845
options.spec = options.spec !== undefined ?
4946
options.spec :
50-
cliConfig && cliConfig.get('defaults.class.spec');
47+
CliConfig.getValue('defaults.class.spec');
5148

5249
return {
5350
dynamicPath: this.dynamicPath.dir,

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

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,7 @@ export default Blueprint.extend({
8383
],
8484

8585
beforeInstall: function (options: any) {
86-
const cliConfig = CliConfig.fromProject();
87-
const ngConfig = cliConfig && cliConfig.config;
88-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
86+
const appConfig = getAppFromConfig(this.options.app);
8987
if (options.module) {
9088
// Resolve path to module
9189
const modulePath = options.module.endsWith('.ts') ? options.module : `${options.module}.ts`;
@@ -108,9 +106,7 @@ export default Blueprint.extend({
108106
},
109107

110108
normalizeEntityName: function (entityName: string) {
111-
const cliConfig = CliConfig.fromProject();
112-
const ngConfig = cliConfig && cliConfig.config;
113-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
109+
const appConfig = getAppFromConfig(this.options.app);
114110
const parsedPath = dynamicPathParser(this.project, entityName, appConfig);
115111

116112
this.dynamicPath = parsedPath;
@@ -131,37 +127,31 @@ export default Blueprint.extend({
131127
},
132128

133129
locals: function (options: any) {
134-
const cliConfig = CliConfig.fromProject();
135-
const ngConfig = cliConfig && cliConfig.config;
136-
137-
this.styleExt = 'css';
138-
if (ngConfig && ngConfig.defaults && ngConfig.defaults.styleExt) {
139-
this.styleExt = ngConfig.defaults.styleExt;
140-
}
130+
this.styleExt = CliConfig.getValue('defaults.styleExt') || 'css';
141131

142132
options.inlineStyle = options.inlineStyle !== undefined ?
143133
options.inlineStyle :
144-
cliConfig && cliConfig.get('defaults.component.inlineStyle');
134+
CliConfig.getValue('defaults.component.inlineStyle');
145135

146136
options.inlineTemplate = options.inlineTemplate !== undefined ?
147137
options.inlineTemplate :
148-
cliConfig && cliConfig.get('defaults.component.inlineTemplate');
138+
CliConfig.getValue('defaults.component.inlineTemplate');
149139

150140
options.flat = options.flat !== undefined ?
151141
options.flat :
152-
cliConfig && cliConfig.get('defaults.component.flat');
142+
CliConfig.getValue('defaults.component.flat');
153143

154144
options.spec = options.spec !== undefined ?
155145
options.spec :
156-
cliConfig && cliConfig.get('defaults.component.spec');
146+
CliConfig.getValue('defaults.component.spec');
157147

158148
options.viewEncapsulation = options.viewEncapsulation !== undefined ?
159149
options.viewEncapsulation :
160-
cliConfig && cliConfig.get('defaults.component.viewEncapsulation');
150+
CliConfig.getValue('defaults.component.viewEncapsulation');
161151

162152
options.changeDetection = options.changeDetection !== undefined ?
163153
options.changeDetection :
164-
cliConfig && cliConfig.get('defaults.component.changeDetection');
154+
CliConfig.getValue('defaults.component.changeDetection');
165155

166156
return {
167157
dynamicPath: this.dynamicPath.dir.replace(this.dynamicPath.appRoot, ''),
@@ -195,9 +185,7 @@ export default Blueprint.extend({
195185
},
196186

197187
fileMapTokens: function (options: any) {
198-
const cliConfig = CliConfig.fromProject();
199-
const ngConfig = cliConfig && cliConfig.config;
200-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
188+
const appConfig = getAppFromConfig(this.options.app);
201189

202190
// Return custom template variables here.
203191
return {

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

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,7 @@ export default Blueprint.extend({
5858
],
5959

6060
beforeInstall: function(options: any) {
61-
const cliConfig = CliConfig.fromProject();
62-
const ngConfig = cliConfig && cliConfig.config;
63-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
61+
const appConfig = getAppFromConfig(this.options.app);
6462
if (options.module) {
6563
// Resolve path to module
6664
const modulePath = options.module.endsWith('.ts') ? options.module : `${options.module}.ts`;
@@ -83,9 +81,7 @@ export default Blueprint.extend({
8381
},
8482

8583
normalizeEntityName: function (entityName: string) {
86-
const cliConfig = CliConfig.fromProject();
87-
const ngConfig = cliConfig && cliConfig.config;
88-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
84+
const appConfig = getAppFromConfig(this.options.app);
8985
const parsedPath = dynamicPathParser(this.project, entityName, appConfig);
9086

9187
this.dynamicPath = parsedPath;
@@ -102,15 +98,13 @@ export default Blueprint.extend({
10298
},
10399

104100
locals: function (options: any) {
105-
const cliConfig = CliConfig.fromProject();
106-
107101
options.spec = options.spec !== undefined ?
108102
options.spec :
109-
cliConfig && cliConfig.get('defaults.directive.spec');
103+
CliConfig.getValue('defaults.directive.spec');
110104

111105
options.flat = options.flat !== undefined ?
112106
options.flat :
113-
cliConfig && cliConfig.get('defaults.directive.flat');
107+
CliConfig.getValue('defaults.directive.flat');
114108

115109
return {
116110
dynamicPath: this.dynamicPath.dir,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default Blueprint.extend({
1717
],
1818

1919
normalizeEntityName: function (entityName: string) {
20-
const appConfig = getAppFromConfig(this.project.ngConfig.apps, this.options.app);
20+
const appConfig = getAppFromConfig(this.options.app);
2121
const parsedPath = dynamicPathParser(this.project, entityName, appConfig);
2222

2323
this.dynamicPath = parsedPath;

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@ export default Blueprint.extend({
3535
],
3636

3737
beforeInstall: function(options: any) {
38-
const cliConfig = CliConfig.fromProject();
39-
const ngConfig = cliConfig && cliConfig.config;
40-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
38+
const appConfig = getAppFromConfig(this.options.app);
4139
if (options.module) {
4240
// Resolve path to module
4341
const modulePath = options.module.endsWith('.ts') ? options.module : `${options.module}.ts`;
@@ -51,9 +49,7 @@ export default Blueprint.extend({
5149
},
5250

5351
normalizeEntityName: function (entityName: string) {
54-
const cliConfig = CliConfig.fromProject();
55-
const ngConfig = cliConfig && cliConfig.config;
56-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
52+
const appConfig = getAppFromConfig(this.options.app);
5753
const parsedPath = dynamicPathParser(this.project, entityName, appConfig);
5854

5955
this.dynamicPath = parsedPath;

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,20 @@ export default Blueprint.extend({
2222
],
2323

2424
normalizeEntityName: function (entityName: string) {
25-
const cliConfig = CliConfig.fromProject();
26-
const ngConfig = cliConfig && cliConfig.config;
27-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
25+
const appConfig = getAppFromConfig(this.options.app);
2826
const parsedPath = dynamicPathParser(this.project, entityName, appConfig);
2927

3028
this.dynamicPath = parsedPath;
3129
return parsedPath.name;
3230
},
3331

3432
locals: function (options: any) {
35-
const cliConfig = CliConfig.fromProject();
36-
3733
const interfaceType = options.args[2];
3834
this.fileName = stringUtils.dasherize(options.entity.name);
3935
if (interfaceType) {
4036
this.fileName += '.' + interfaceType;
4137
}
42-
const prefix = cliConfig && cliConfig.get('defaults.interface.prefix');
38+
const prefix = CliConfig.getValue('defaults.interface.prefix');
4339
return {
4440
dynamicPath: this.dynamicPath.dir,
4541
flat: options.flat,

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,24 +36,21 @@ export default Blueprint.extend({
3636

3737
normalizeEntityName: function (entityName: string) {
3838
this.entityName = entityName;
39-
const cliConfig = CliConfig.fromProject();
40-
const ngConfig = cliConfig && cliConfig.config;
41-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
39+
const appConfig = getAppFromConfig(this.options.app);
4240
const parsedPath = dynamicPathParser(this.project, entityName, appConfig);
4341

4442
this.dynamicPath = parsedPath;
4543
return parsedPath.name;
4644
},
4745

4846
locals: function (options: any) {
49-
const cliConfig = CliConfig.fromProject();
5047
options.flat = options.flat !== undefined ?
5148
options.flat :
52-
cliConfig && cliConfig.get('defaults.module.flat');
49+
CliConfig.getValue('defaults.module.flat');
5350

5451
options.spec = options.spec !== undefined ?
5552
options.spec :
56-
cliConfig && cliConfig.get('defaults.module.spec');
53+
CliConfig.getValue('defaults.module.spec');
5754

5855
return {
5956
dynamicPath: this.dynamicPath.dir,

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export default Blueprint.extend({
1111
availableOptions: [
1212
{ name: 'source-dir', type: String, default: 'src', aliases: ['sd'] },
1313
{ name: 'prefix', type: String, default: 'app', aliases: ['p'] },
14-
{ name: 'style', type: String, default: 'css' },
14+
{ name: 'style', type: String },
1515
{ name: 'routing', type: Boolean, default: false },
1616
{ name: 'inline-style', type: Boolean, default: false, aliases: ['is'] },
1717
{ name: 'inline-template', type: Boolean, default: false, aliases: ['it'] },
@@ -27,6 +27,10 @@ export default Blueprint.extend({
2727

2828
locals: function(options: any) {
2929
this.styleExt = options.style === 'stylus' ? 'styl' : options.style;
30+
if (!options.style) {
31+
this.styleExt = CliConfig.getValue('defaults.styleExt') || 'css';
32+
}
33+
3034
this.version = require(path.resolve(__dirname, '../../package.json')).version;
3135
// set this.tests to opposite of skipTest options,
3236
// meaning if tests are being skipped then the default.spec.BLUEPRINT will be false

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

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,7 @@ export default Blueprint.extend({
5353
],
5454

5555
beforeInstall: function(options: any) {
56-
const cliConfig = CliConfig.fromProject();
57-
const ngConfig = cliConfig && cliConfig.config;
58-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
56+
const appConfig = getAppFromConfig(this.options.app);
5957
if (options.module) {
6058
// Resolve path to module
6159
const modulePath = options.module.endsWith('.ts') ? options.module : `${options.module}.ts`;
@@ -78,24 +76,21 @@ export default Blueprint.extend({
7876
},
7977

8078
normalizeEntityName: function (entityName: string) {
81-
const cliConfig = CliConfig.fromProject();
82-
const ngConfig = cliConfig && cliConfig.config;
83-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
79+
const appConfig = getAppFromConfig(this.options.app);
8480
const parsedPath = dynamicPathParser(this.project, entityName, appConfig);
8581

8682
this.dynamicPath = parsedPath;
8783
return parsedPath.name;
8884
},
8985

9086
locals: function (options: any) {
91-
const cliConfig = CliConfig.fromProject();
9287
options.flat = options.flat !== undefined ?
9388
options.flat :
94-
cliConfig && cliConfig.get('defaults.pipe.flat');
89+
CliConfig.getValue('defaults.pipe.flat');
9590

9691
options.spec = options.spec !== undefined ?
9792
options.spec :
98-
cliConfig && cliConfig.get('defaults.pipe.spec');
93+
CliConfig.getValue('defaults.pipe.spec');
9994

10095
return {
10196
dynamicPath: this.dynamicPath.dir,

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

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,7 @@ export default Blueprint.extend({
4343
if (options.module) {
4444
// Resolve path to module
4545
const modulePath = options.module.endsWith('.ts') ? options.module : `${options.module}.ts`;
46-
const cliConfig = CliConfig.fromProject();
47-
const ngConfig = cliConfig && cliConfig.config;
48-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
46+
const appConfig = getAppFromConfig(this.options.app);
4947
const parsedPath = dynamicPathParser(this.project, modulePath, appConfig);
5048
this.pathToModule = path.join(this.project.root, parsedPath.dir, parsedPath.base);
5149

@@ -56,24 +54,21 @@ export default Blueprint.extend({
5654
},
5755

5856
normalizeEntityName: function (entityName: string) {
59-
const cliConfig = CliConfig.fromProject();
60-
const ngConfig = cliConfig && cliConfig.config;
61-
const appConfig = getAppFromConfig(ngConfig.apps, this.options.app);
57+
const appConfig = getAppFromConfig(this.options.app);
6258
const parsedPath = dynamicPathParser(this.project, entityName, appConfig);
6359

6460
this.dynamicPath = parsedPath;
6561
return parsedPath.name;
6662
},
6763

6864
locals: function (options: any) {
69-
const cliConfig = CliConfig.fromProject();
7065
options.flat = options.flat !== undefined ?
7166
options.flat :
72-
cliConfig && cliConfig.get('defaults.service.flat');
67+
CliConfig.getValue('defaults.service.flat');
7368

7469
options.spec = options.spec !== undefined ?
7570
options.spec :
76-
cliConfig && cliConfig.get('defaults.service.spec');
71+
CliConfig.getValue('defaults.service.spec');
7772

7873
return {
7974
dynamicPath: this.dynamicPath.dir,

packages/@angular/cli/commands/e2e.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ const E2eCommand = Command.extend({
8080
]),
8181
run: function (commandOptions: E2eTaskOptions) {
8282
const E2eTask = require('../tasks/e2e').E2eTask;
83-
this.project.ngConfig = this.project.ngConfig || CliConfig.fromProject();
8483

8584
const e2eTask = new E2eTask({
8685
ui: this.ui,

packages/@angular/cli/commands/generate.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import * as fs from 'fs';
22
import * as path from 'path';
33
import * as os from 'os';
4-
import {CliConfig} from '../models/config';
54

65
const chalk = require('chalk');
76
const EmberGenerateCommand = require('../ember-cli/lib/commands/generate');
@@ -26,7 +25,6 @@ const GenerateCommand = EmberGenerateCommand.extend({
2625

2726
// map the blueprint name to allow for aliases
2827
rawArgs[0] = mapBlueprintName(rawArgs[0]);
29-
this.project.ngConfig = this.project.ngConfig || CliConfig.fromProject();
3028

3129
if (rawArgs[0] !== '--help' &&
3230
!fs.existsSync(path.join(__dirname, '..', 'blueprints', rawArgs[0]))) {

packages/@angular/cli/commands/test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,6 @@ const TestCommand = EmberTestCommand.extend({
113113
],
114114

115115
run: function(commandOptions: TestOptions) {
116-
this.project.ngConfig = this.project.ngConfig || CliConfig.fromProject();
117-
118116
const testTask = new TestTask({
119117
ui: this.ui,
120118
project: this.project

packages/@angular/cli/models/config.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,23 @@ export class CliConfig extends CliConfigBase<ConfigInterface> {
3030
|| findUp(configNames, __dirname);
3131
}
3232

33+
static getValue(jsonPath: string): any {
34+
let value;
35+
36+
const projectConfig = CliConfig.fromProject();
37+
if (projectConfig) {
38+
value = projectConfig.get(jsonPath);
39+
}
40+
if (!value) {
41+
const globalConfig = CliConfig.fromGlobal();
42+
if (globalConfig) {
43+
value = globalConfig.get(jsonPath);
44+
}
45+
}
46+
47+
return value;
48+
}
49+
3350
static globalConfigFilePath(): string {
3451
let globalConfigPath = path.join(getUserHome(), CLI_CONFIG_FILE_NAME);
3552
const altGlobalConfigPath = path.join(getUserHome(), CLI_CONFIG_FILE_NAME_ALT);

0 commit comments

Comments
 (0)