1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const config_1 = require("./config/config");
|
4 | const common_tags_1 = require("common-tags");
|
5 | const chalk = require("chalk");
|
6 | const fs = require("fs");
|
7 | const path = require("path");
|
8 | const find_up_1 = require("../utilities/find-up");
|
9 | exports.CLI_CONFIG_FILE_NAME = '.angular-cli.json';
|
10 | const CLI_CONFIG_FILE_NAME_ALT = 'angular-cli.json';
|
11 | function getUserHome() {
|
12 | return process.env[(process.platform.startsWith('win')) ? 'USERPROFILE' : 'HOME'];
|
13 | }
|
14 | const configCacheMap = new Map();
|
15 | class CliConfig extends config_1.CliConfig {
|
16 | static configFilePath(projectPath) {
|
17 | const configNames = [exports.CLI_CONFIG_FILE_NAME, CLI_CONFIG_FILE_NAME_ALT];
|
18 |
|
19 |
|
20 | return (projectPath && find_up_1.findUp(configNames, projectPath))
|
21 | || find_up_1.findUp(configNames, process.cwd())
|
22 | || find_up_1.findUp(configNames, __dirname);
|
23 | }
|
24 | static getValue(jsonPath) {
|
25 | let value;
|
26 | const projectConfig = CliConfig.fromProject();
|
27 | if (projectConfig) {
|
28 | value = projectConfig.get(jsonPath);
|
29 | }
|
30 | else {
|
31 | const globalConfig = CliConfig.fromGlobal();
|
32 | if (globalConfig) {
|
33 | value = globalConfig.get(jsonPath);
|
34 | }
|
35 | }
|
36 | return value;
|
37 | }
|
38 | static globalConfigFilePath() {
|
39 | let globalConfigPath = path.join(getUserHome(), exports.CLI_CONFIG_FILE_NAME);
|
40 | const altGlobalConfigPath = path.join(getUserHome(), CLI_CONFIG_FILE_NAME_ALT);
|
41 | if (!fs.existsSync(globalConfigPath) && fs.existsSync(altGlobalConfigPath)) {
|
42 | return altGlobalConfigPath;
|
43 | }
|
44 | return globalConfigPath;
|
45 | }
|
46 | static fromGlobal() {
|
47 | const globalConfigPath = this.globalConfigFilePath();
|
48 | if (configCacheMap.has(globalConfigPath)) {
|
49 | return configCacheMap.get(globalConfigPath);
|
50 | }
|
51 | const cliConfig = config_1.CliConfig.fromConfigPath(globalConfigPath);
|
52 | const aliases = [
|
53 | cliConfig.alias('apps.0.root', 'defaults.sourceDir'),
|
54 | cliConfig.alias('apps.0.prefix', 'defaults.prefix')
|
55 | ];
|
56 |
|
57 | cliConfig.alias('defaults.interface.prefix', 'defaults.inline.prefixInterfaces');
|
58 | cliConfig.alias('defaults.component.inlineStyle', 'defaults.inline.style');
|
59 | cliConfig.alias('defaults.component.inlineTemplate', 'defaults.inline.template');
|
60 | cliConfig.alias('defaults.component.spec', 'defaults.spec.component');
|
61 | cliConfig.alias('defaults.class.spec', 'defaults.spec.class');
|
62 | cliConfig.alias('defaults.component.directive', 'defaults.spec.directive');
|
63 | cliConfig.alias('defaults.component.module', 'defaults.spec.module');
|
64 | cliConfig.alias('defaults.component.pipe', 'defaults.spec.pipe');
|
65 | cliConfig.alias('defaults.component.service', 'defaults.spec.service');
|
66 |
|
67 | if (aliases.some(x => x)) {
|
68 | console.error(chalk.yellow(common_tags_1.oneLine `
|
69 | The "defaults.prefix" and "defaults.sourceDir" properties of .angular-cli.json
|
70 | are deprecated in favor of "apps[0].root" and "apps[0].prefix".\n
|
71 | Please update in order to avoid errors in future versions of Angular CLI.
|
72 | `));
|
73 | }
|
74 | configCacheMap.set(globalConfigPath, cliConfig);
|
75 | return cliConfig;
|
76 | }
|
77 | static fromProject(projectPath) {
|
78 | const configPath = this.configFilePath(projectPath);
|
79 | if (!configPath ||
|
80 | (configPath === this.globalConfigFilePath() && process.cwd() !== path.dirname(configPath))) {
|
81 | return null;
|
82 | }
|
83 | if (configCacheMap.has(configPath)) {
|
84 | return configCacheMap.get(configPath);
|
85 | }
|
86 | let globalConfigPath = path.join(getUserHome(), exports.CLI_CONFIG_FILE_NAME);
|
87 | const altGlobalConfigPath = path.join(getUserHome(), CLI_CONFIG_FILE_NAME_ALT);
|
88 | if (!fs.existsSync(globalConfigPath) && fs.existsSync(altGlobalConfigPath)) {
|
89 | globalConfigPath = altGlobalConfigPath;
|
90 | }
|
91 | const cliConfig = config_1.CliConfig.fromConfigPath(configPath, [globalConfigPath]);
|
92 | const aliases = [
|
93 | cliConfig.alias('apps.0.root', 'defaults.sourceDir'),
|
94 | cliConfig.alias('apps.0.prefix', 'defaults.prefix')
|
95 | ];
|
96 |
|
97 | cliConfig.alias('defaults.interface.prefix', 'defaults.inline.prefixInterfaces');
|
98 | cliConfig.alias('defaults.component.inlineStyle', 'defaults.inline.style');
|
99 | cliConfig.alias('defaults.component.inlineTemplate', 'defaults.inline.template');
|
100 | cliConfig.alias('defaults.component.spec', 'defaults.spec.component');
|
101 | cliConfig.alias('defaults.class.spec', 'defaults.spec.class');
|
102 | cliConfig.alias('defaults.component.directive', 'defaults.spec.directive');
|
103 | cliConfig.alias('defaults.component.module', 'defaults.spec.module');
|
104 | cliConfig.alias('defaults.component.pipe', 'defaults.spec.pipe');
|
105 | cliConfig.alias('defaults.component.service', 'defaults.spec.service');
|
106 |
|
107 | if (aliases.some(x => x)) {
|
108 | console.error(chalk.yellow(common_tags_1.oneLine `
|
109 | The "defaults.prefix" and "defaults.sourceDir" properties of .angular-cli.json
|
110 | are deprecated in favor of "apps[0].root" and "apps[0].prefix".\n
|
111 | Please update in order to avoid errors in future versions of Angular CLI.
|
112 | `));
|
113 | }
|
114 | configCacheMap.set(configPath, cliConfig);
|
115 | return cliConfig;
|
116 | }
|
117 | }
|
118 | exports.CliConfig = CliConfig;
|
119 |
|
\ | No newline at end of file |