UNPKG

35.7 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var path_1 = require("path");
4var fs_extra_1 = require("fs-extra");
5var logger_1 = require("../logger/logger");
6var helpers_1 = require("./helpers");
7var file_cache_1 = require("./file-cache");
8var Constants = require("./constants");
9/**
10 * Create a context object which is used by all the build tasks.
11 * Filling the config data uses the following hierarchy, which will
12 * keep going down the list until it, or if it, finds data.
13 *
14 * 1) Get from the passed in context variable
15 * 2) Get from the config file set using the command-line args
16 * 3) Get from environment variable
17 * 4) Get from package.json config property
18 * 5) Get environment variables
19 *
20 * Lastly, Ionic's default configs will always fill in any data
21 * which is missing from the user's data.
22 */
23function generateContext(context) {
24 if (!context) {
25 context = {};
26 }
27 if (!context.fileCache) {
28 context.fileCache = new file_cache_1.FileCache();
29 }
30 context.isProd = [
31 context.isProd,
32 hasArg('--prod')
33 ].find(function (val) { return typeof val === 'boolean'; });
34 setProcessEnvVar(Constants.ENV_VAR_IONIC_ENV, (context.isProd ? Constants.ENV_VAR_PROD : Constants.ENV_VAR_DEV));
35 // If context is prod then the following flags must be set to true
36 context.runAot = [
37 context.runAot,
38 context.isProd || hasArg('--aot'),
39 ].find(function (val) { return typeof val === 'boolean'; });
40 context.runMinifyJs = [
41 context.runMinifyJs,
42 context.isProd || hasArg('--minifyJs')
43 ].find(function (val) { return typeof val === 'boolean'; });
44 context.runMinifyCss = [
45 context.runMinifyCss,
46 context.isProd || hasArg('--minifyCss')
47 ].find(function (val) { return typeof val === 'boolean'; });
48 context.optimizeJs = [
49 context.optimizeJs,
50 context.isProd || hasArg('--optimizeJs')
51 ].find(function (val) { return typeof val === 'boolean'; });
52 if (typeof context.isWatch !== 'boolean') {
53 context.isWatch = hasArg('--watch');
54 }
55 setProcessEnvVar(Constants.ENV_VAR_IONIC_AOT, "" + context.runAot);
56 logger_1.Logger.debug(Constants.ENV_VAR_IONIC_AOT + " set to " + context.runAot);
57 setProcessEnvVar(Constants.ENV_VAR_IONIC_MINIFY_JS, "" + context.runMinifyJs);
58 logger_1.Logger.debug(Constants.ENV_VAR_IONIC_MINIFY_JS + " set to " + context.runMinifyJs);
59 setProcessEnvVar(Constants.ENV_VAR_IONIC_MINIFY_CSS, "" + context.runMinifyCss);
60 logger_1.Logger.debug(Constants.ENV_VAR_IONIC_MINIFY_CSS + " set to " + context.runMinifyCss);
61 setProcessEnvVar(Constants.ENV_VAR_IONIC_OPTIMIZE_JS, "" + context.optimizeJs);
62 logger_1.Logger.debug(Constants.ENV_VAR_IONIC_OPTIMIZE_JS + " set to " + context.optimizeJs);
63 setProcessEnvVar(Constants.ENV_VAR_IONIC_MINIFY_JS, "" + context.runMinifyJs);
64 logger_1.Logger.debug(Constants.ENV_VAR_IONIC_MINIFY_JS + " set to " + context.runMinifyJs);
65 context.rootDir = path_1.resolve(context.rootDir || getConfigValue(context, '--rootDir', null, Constants.ENV_VAR_ROOT_DIR, Constants.ENV_VAR_ROOT_DIR.toLowerCase(), processCwd));
66 setProcessEnvVar(Constants.ENV_VAR_ROOT_DIR, context.rootDir);
67 logger_1.Logger.debug("rootDir set to " + context.rootDir);
68 context.tmpDir = path_1.resolve(context.tmpDir || getConfigValue(context, '--tmpDir', null, Constants.ENV_VAR_TMP_DIR, Constants.ENV_VAR_TMP_DIR.toLowerCase(), path_1.join(context.rootDir, Constants.TMP_DIR)));
69 setProcessEnvVar(Constants.ENV_VAR_TMP_DIR, context.tmpDir);
70 logger_1.Logger.debug("tmpDir set to " + context.tmpDir);
71 context.srcDir = path_1.resolve(context.srcDir || getConfigValue(context, '--srcDir', null, Constants.ENV_VAR_SRC_DIR, Constants.ENV_VAR_SRC_DIR.toLowerCase(), path_1.join(context.rootDir, Constants.SRC_DIR)));
72 setProcessEnvVar(Constants.ENV_VAR_SRC_DIR, context.srcDir);
73 logger_1.Logger.debug("srcDir set to " + context.srcDir);
74 var deepLinksDir = path_1.resolve(getConfigValue(context, '--deepLinksDir', null, Constants.ENV_VAR_DEEPLINKS_DIR, Constants.ENV_VAR_DEEPLINKS_DIR.toLowerCase(), context.srcDir));
75 setProcessEnvVar(Constants.ENV_VAR_DEEPLINKS_DIR, deepLinksDir);
76 logger_1.Logger.debug("deepLinksDir set to " + deepLinksDir);
77 context.wwwDir = path_1.resolve(context.wwwDir || getConfigValue(context, '--wwwDir', null, Constants.ENV_VAR_WWW_DIR, Constants.ENV_VAR_WWW_DIR.toLowerCase(), path_1.join(context.rootDir, Constants.WWW_DIR)));
78 setProcessEnvVar(Constants.ENV_VAR_WWW_DIR, context.wwwDir);
79 logger_1.Logger.debug("wwwDir set to " + context.wwwDir);
80 context.wwwIndex = getConfigValue(context, '--wwwIndex', null, Constants.ENV_VAR_HTML_TO_SERVE, Constants.ENV_VAR_HTML_TO_SERVE.toLowerCase(), 'index.html');
81 setProcessEnvVar(Constants.ENV_VAR_HTML_TO_SERVE, context.wwwIndex);
82 logger_1.Logger.debug("wwwIndex set to " + context.wwwIndex);
83 context.buildDir = path_1.resolve(context.buildDir || getConfigValue(context, '--buildDir', null, Constants.ENV_VAR_BUILD_DIR, Constants.ENV_VAR_BUILD_DIR.toLowerCase(), path_1.join(context.wwwDir, Constants.BUILD_DIR)));
84 setProcessEnvVar(Constants.ENV_VAR_BUILD_DIR, context.buildDir);
85 logger_1.Logger.debug("buildDir set to " + context.buildDir);
86 var fontsDir = path_1.resolve(getConfigValue(context, '--fontsDir', null, Constants.ENV_VAR_FONTS_DIR, Constants.ENV_VAR_FONTS_DIR.toLowerCase(), path_1.join(context.wwwDir, 'assets', 'fonts')));
87 setProcessEnvVar(Constants.ENV_VAR_FONTS_DIR, fontsDir);
88 logger_1.Logger.debug("fontsDir set to " + fontsDir);
89 context.sourcemapDir = path_1.resolve(context.sourcemapDir || getConfigValue(context, '--sourcemapDir', null, Constants.ENV_VAR_SOURCEMAP_DIR, Constants.ENV_VAR_SOURCEMAP_DIR.toLowerCase(), Constants.SOURCEMAP_DIR));
90 setProcessEnvVar(Constants.ENV_VAR_SOURCEMAP_DIR, context.sourcemapDir);
91 logger_1.Logger.debug("sourcemapDir set to " + context.sourcemapDir);
92 context.pagesDir = path_1.resolve(context.pagesDir || getConfigValue(context, '--pagesDir', null, Constants.ENV_VAR_PAGES_DIR, Constants.ENV_VAR_PAGES_DIR.toLowerCase(), path_1.join(context.srcDir, 'pages')));
93 setProcessEnvVar(Constants.ENV_VAR_PAGES_DIR, context.pagesDir);
94 logger_1.Logger.debug("pagesDir set to " + context.pagesDir);
95 context.componentsDir = path_1.resolve(context.componentsDir || getConfigValue(context, '--componentsDir', null, Constants.ENV_VAR_COMPONENTS_DIR, Constants.ENV_VAR_COMPONENTS_DIR.toLowerCase(), path_1.join(context.srcDir, 'components')));
96 setProcessEnvVar(Constants.ENV_VAR_COMPONENTS_DIR, context.componentsDir);
97 logger_1.Logger.debug("componentsDir set to " + context.componentsDir);
98 context.directivesDir = path_1.resolve(context.directivesDir || getConfigValue(context, '--directivesDir', null, Constants.ENV_VAR_DIRECTIVES_DIR, Constants.ENV_VAR_DIRECTIVES_DIR.toLowerCase(), path_1.join(context.srcDir, 'directives')));
99 setProcessEnvVar(Constants.ENV_VAR_DIRECTIVES_DIR, context.directivesDir);
100 logger_1.Logger.debug("directivesDir set to " + context.directivesDir);
101 context.pipesDir = path_1.resolve(context.pipesDir || getConfigValue(context, '--pipesDir', null, Constants.ENV_VAR_PIPES_DIR, Constants.ENV_VAR_PIPES_DIR.toLowerCase(), path_1.join(context.srcDir, 'pipes')));
102 setProcessEnvVar(Constants.ENV_VAR_PIPES_DIR, context.pipesDir);
103 logger_1.Logger.debug("pipesDir set to " + context.pipesDir);
104 context.providersDir = path_1.resolve(context.providersDir || getConfigValue(context, '--providersDir', null, Constants.ENV_VAR_PROVIDERS_DIR, Constants.ENV_VAR_PROVIDERS_DIR.toLowerCase(), path_1.join(context.srcDir, 'providers')));
105 setProcessEnvVar(Constants.ENV_VAR_PROVIDERS_DIR, context.providersDir);
106 logger_1.Logger.debug("providersDir set to " + context.providersDir);
107 context.nodeModulesDir = path_1.join(context.rootDir, Constants.NODE_MODULES);
108 setProcessEnvVar(Constants.ENV_VAR_NODE_MODULES_DIR, context.nodeModulesDir);
109 logger_1.Logger.debug("nodeModulesDir set to " + context.nodeModulesDir);
110 context.ionicAngularDir = path_1.resolve(context.ionicAngularDir || getConfigValue(context, '--ionicAngularDir', null, Constants.ENV_VAR_IONIC_ANGULAR_DIR, Constants.ENV_VAR_IONIC_ANGULAR_DIR.toLowerCase(), path_1.join(context.nodeModulesDir, Constants.IONIC_ANGULAR)));
111 setProcessEnvVar(Constants.ENV_VAR_IONIC_ANGULAR_DIR, context.ionicAngularDir);
112 logger_1.Logger.debug("ionicAngularDir set to " + context.ionicAngularDir);
113 var angularDir = path_1.resolve(getConfigValue(context, '--angularDir', null, Constants.ENV_VAR_ANGULAR_CORE_DIR, Constants.ENV_VAR_ANGULAR_CORE_DIR.toLowerCase(), path_1.join(context.nodeModulesDir, Constants.AT_ANGULAR, 'core')));
114 setProcessEnvVar(Constants.ENV_VAR_ANGULAR_CORE_DIR, angularDir);
115 logger_1.Logger.debug("angularDir set to " + angularDir);
116 context.angularCoreDir = angularDir;
117 var typescriptDir = path_1.resolve(getConfigValue(context, '--typescriptDir', null, Constants.ENV_VAR_TYPESCRIPT_DIR, Constants.ENV_VAR_TYPESCRIPT_DIR.toLowerCase(), path_1.join(context.nodeModulesDir, Constants.TYPESCRIPT)));
118 setProcessEnvVar(Constants.ENV_VAR_TYPESCRIPT_DIR, typescriptDir);
119 logger_1.Logger.debug("typescriptDir set to " + typescriptDir);
120 context.typescriptDir = typescriptDir;
121 var defaultCoreCompilerFilePath = path_1.join(context.ionicAngularDir, 'compiler');
122 context.coreCompilerFilePath = path_1.resolve(context.coreCompilerFilePath || getConfigValue(context, '--coreCompilerFilePath', null, Constants.ENV_VAR_CORE_COMPILER_FILE_PATH, Constants.ENV_VAR_CORE_COMPILER_FILE_PATH.toLowerCase(), defaultCoreCompilerFilePath));
123 setProcessEnvVar(Constants.ENV_VAR_CORE_COMPILER_FILE_PATH, context.coreCompilerFilePath);
124 logger_1.Logger.debug("coreCompilerFilePath set to " + context.coreCompilerFilePath);
125 var defaultCoreDir = context.ionicAngularDir;
126 context.coreDir = path_1.resolve(context.coreDir || getConfigValue(context, '--coreDir', null, Constants.ENV_VAR_CORE_DIR, Constants.ENV_VAR_CORE_DIR.toLowerCase(), defaultCoreDir));
127 setProcessEnvVar(Constants.ENV_VAR_CORE_DIR, context.coreDir);
128 logger_1.Logger.debug("coreDir set to " + context.coreDir);
129 var rxjsDir = path_1.resolve(getConfigValue(context, '--rxjsDir', null, Constants.ENV_VAR_RXJS_DIR, Constants.ENV_VAR_RXJS_DIR.toLowerCase(), path_1.join(context.nodeModulesDir, Constants.RXJS)));
130 setProcessEnvVar(Constants.ENV_VAR_RXJS_DIR, rxjsDir);
131 logger_1.Logger.debug("rxjsDir set to " + rxjsDir);
132 var ionicAngularTemplatesDir = path_1.join(context.ionicAngularDir, 'templates');
133 setProcessEnvVar(Constants.ENV_VAR_IONIC_ANGULAR_TEMPLATE_DIR, ionicAngularTemplatesDir);
134 logger_1.Logger.debug("ionicAngularTemplatesDir set to " + ionicAngularTemplatesDir);
135 context.platform = getConfigValue(context, '--platform', null, Constants.ENV_VAR_PLATFORM, null, null);
136 setProcessEnvVar(Constants.ENV_VAR_PLATFORM, context.platform);
137 logger_1.Logger.debug("platform set to " + context.platform);
138 context.target = getConfigValue(context, '--target', null, Constants.ENV_VAR_TARGET, null, null);
139 setProcessEnvVar(Constants.ENV_VAR_TARGET, context.target);
140 logger_1.Logger.debug("target set to " + context.target);
141 var ionicAngularEntryPoint = path_1.resolve(getConfigValue(context, '--ionicAngularEntryPoint', null, Constants.ENV_VAR_IONIC_ANGULAR_ENTRY_POINT, Constants.ENV_VAR_IONIC_ANGULAR_ENTRY_POINT.toLowerCase(), path_1.join(context.ionicAngularDir, 'index.js')));
142 setProcessEnvVar(Constants.ENV_VAR_IONIC_ANGULAR_ENTRY_POINT, ionicAngularEntryPoint);
143 logger_1.Logger.debug("ionicAngularEntryPoint set to " + ionicAngularEntryPoint);
144 var appScriptsDir = path_1.join(__dirname, '..', '..');
145 setProcessEnvVar(Constants.ENV_VAR_APP_SCRIPTS_DIR, appScriptsDir);
146 logger_1.Logger.debug("appScriptsDir set to " + appScriptsDir);
147 var generateSourceMap = getConfigValue(context, '--generateSourceMap', null, Constants.ENV_VAR_GENERATE_SOURCE_MAP, Constants.ENV_VAR_GENERATE_SOURCE_MAP.toLowerCase(), context.isProd || context.runMinifyJs ? null : 'true');
148 setProcessEnvVar(Constants.ENV_VAR_GENERATE_SOURCE_MAP, generateSourceMap);
149 logger_1.Logger.debug("generateSourceMap set to " + generateSourceMap);
150 var sourceMapTypeValue = getConfigValue(context, '--sourceMapType', null, Constants.ENV_VAR_SOURCE_MAP_TYPE, Constants.ENV_VAR_SOURCE_MAP_TYPE.toLowerCase(), Constants.SOURCE_MAP_TYPE_EXPENSIVE);
151 setProcessEnvVar(Constants.ENV_VAR_SOURCE_MAP_TYPE, sourceMapTypeValue);
152 logger_1.Logger.debug("sourceMapType set to " + sourceMapTypeValue);
153 var moveSourceMaps = getConfigValue(context, '--moveSourceMaps', null, Constants.ENV_VAR_MOVE_SOURCE_MAPS, Constants.ENV_VAR_MOVE_SOURCE_MAPS.toLowerCase(), 'true');
154 setProcessEnvVar(Constants.ENV_VAR_MOVE_SOURCE_MAPS, moveSourceMaps);
155 logger_1.Logger.debug("moveSourceMaps set to " + moveSourceMaps);
156 var tsConfigPathValue = path_1.resolve(getConfigValue(context, '--tsconfig', null, Constants.ENV_TS_CONFIG, Constants.ENV_TS_CONFIG.toLowerCase(), path_1.join(context.rootDir, 'tsconfig.json')));
157 setProcessEnvVar(Constants.ENV_TS_CONFIG, tsConfigPathValue);
158 logger_1.Logger.debug("tsconfig set to " + tsConfigPathValue);
159 var readConfigJson = getConfigValue(context, '--readConfigJson', null, Constants.ENV_READ_CONFIG_JSON, Constants.ENV_READ_CONFIG_JSON.toLowerCase(), 'true');
160 setProcessEnvVar(Constants.ENV_READ_CONFIG_JSON, readConfigJson);
161 logger_1.Logger.debug("readConfigJson set to " + readConfigJson);
162 var appEntryPointPathValue = path_1.resolve(getConfigValue(context, '--appEntryPoint', null, Constants.ENV_APP_ENTRY_POINT, Constants.ENV_APP_ENTRY_POINT.toLowerCase(), path_1.join(context.srcDir, 'app', 'main.ts')));
163 setProcessEnvVar(Constants.ENV_APP_ENTRY_POINT, appEntryPointPathValue);
164 logger_1.Logger.debug("appEntryPoint set to " + appEntryPointPathValue);
165 context.appNgModulePath = path_1.resolve(getConfigValue(context, '--appNgModulePath', null, Constants.ENV_APP_NG_MODULE_PATH, Constants.ENV_APP_NG_MODULE_PATH.toLowerCase(), path_1.join(context.srcDir, 'app', 'app.module.ts')));
166 setProcessEnvVar(Constants.ENV_APP_NG_MODULE_PATH, context.appNgModulePath);
167 logger_1.Logger.debug("appNgModulePath set to " + context.appNgModulePath);
168 context.componentsNgModulePath = path_1.resolve(getConfigValue(context, '--componentsNgModulePath', null, Constants.ENV_COMPONENTS_NG_MODULE_PATH, Constants.ENV_COMPONENTS_NG_MODULE_PATH.toLowerCase(), path_1.join(context.srcDir, 'components', 'components.module.ts')));
169 setProcessEnvVar(Constants.ENV_COMPONENTS_NG_MODULE_PATH, context.componentsNgModulePath);
170 logger_1.Logger.debug("componentsNgModulePath set to " + context.componentsNgModulePath);
171 context.pipesNgModulePath = path_1.resolve(getConfigValue(context, '--pipesNgModulePath', null, Constants.ENV_PIPES_NG_MODULE_PATH, Constants.ENV_PIPES_NG_MODULE_PATH.toLowerCase(), path_1.join(context.srcDir, 'pipes', 'pipes.module.ts')));
172 setProcessEnvVar(Constants.ENV_PIPES_NG_MODULE_PATH, context.pipesNgModulePath);
173 logger_1.Logger.debug("pipesNgModulePath set to " + context.pipesNgModulePath);
174 context.directivesNgModulePath = path_1.resolve(getConfigValue(context, '--directivesNgModulePath', null, Constants.ENV_DIRECTIVES_NG_MODULE_PATH, Constants.ENV_DIRECTIVES_NG_MODULE_PATH.toLowerCase(), path_1.join(context.srcDir, 'directives', 'directives.module.ts')));
175 setProcessEnvVar(Constants.ENV_DIRECTIVES_NG_MODULE_PATH, context.directivesNgModulePath);
176 logger_1.Logger.debug("directivesNgModulePath set to " + context.directivesNgModulePath);
177 var appNgModuleClass = getConfigValue(context, '--appNgModuleClass', null, Constants.ENV_APP_NG_MODULE_CLASS, Constants.ENV_APP_NG_MODULE_CLASS.toLowerCase(), 'AppModule');
178 setProcessEnvVar(Constants.ENV_APP_NG_MODULE_CLASS, appNgModuleClass);
179 logger_1.Logger.debug("appNgModuleClass set to " + appNgModuleClass);
180 var pathToGlobUtil = path_1.join(getProcessEnvVar(Constants.ENV_VAR_APP_SCRIPTS_DIR), 'dist', 'util', 'glob-util.js');
181 setProcessEnvVar(Constants.ENV_GLOB_UTIL, pathToGlobUtil);
182 logger_1.Logger.debug("pathToGlobUtil set to " + pathToGlobUtil);
183 var cleanBeforeCopy = getConfigValue(context, '--cleanBeforeCopy', null, Constants.ENV_CLEAN_BEFORE_COPY, Constants.ENV_CLEAN_BEFORE_COPY.toLowerCase(), null);
184 setProcessEnvVar(Constants.ENV_CLEAN_BEFORE_COPY, cleanBeforeCopy);
185 logger_1.Logger.debug("cleanBeforeCopy set to " + cleanBeforeCopy);
186 context.outputJsFileName = getConfigValue(context, '--outputJsFileName', null, Constants.ENV_OUTPUT_JS_FILE_NAME, Constants.ENV_OUTPUT_JS_FILE_NAME.toLowerCase(), 'main.js');
187 setProcessEnvVar(Constants.ENV_OUTPUT_JS_FILE_NAME, context.outputJsFileName);
188 logger_1.Logger.debug("outputJsFileName set to " + context.outputJsFileName);
189 context.outputCssFileName = getConfigValue(context, '--outputCssFileName', null, Constants.ENV_OUTPUT_CSS_FILE_NAME, Constants.ENV_OUTPUT_CSS_FILE_NAME.toLowerCase(), 'main.css');
190 setProcessEnvVar(Constants.ENV_OUTPUT_CSS_FILE_NAME, context.outputCssFileName);
191 logger_1.Logger.debug("outputCssFileName set to " + context.outputCssFileName);
192 var webpackFactoryPath = path_1.join(getProcessEnvVar(Constants.ENV_VAR_APP_SCRIPTS_DIR), 'dist', 'webpack', 'ionic-webpack-factory.js');
193 setProcessEnvVar(Constants.ENV_WEBPACK_FACTORY, webpackFactoryPath);
194 logger_1.Logger.debug("webpackFactoryPath set to " + webpackFactoryPath);
195 var webpackLoaderPath = path_1.join(getProcessEnvVar(Constants.ENV_VAR_APP_SCRIPTS_DIR), 'dist', 'webpack', 'loader.js');
196 setProcessEnvVar(Constants.ENV_WEBPACK_LOADER, webpackLoaderPath);
197 logger_1.Logger.debug("webpackLoaderPath set to " + webpackLoaderPath);
198 var cacheLoaderPath = path_1.join(getProcessEnvVar(Constants.ENV_VAR_APP_SCRIPTS_DIR), 'dist', 'webpack', 'cache-loader.js');
199 setProcessEnvVar(Constants.ENV_CACHE_LOADER, cacheLoaderPath);
200 logger_1.Logger.debug("cacheLoaderPath set to " + cacheLoaderPath);
201 var aotWriteToDisk = getConfigValue(context, '--aotWriteToDisk', null, Constants.ENV_AOT_WRITE_TO_DISK, Constants.ENV_AOT_WRITE_TO_DISK.toLowerCase(), null);
202 setProcessEnvVar(Constants.ENV_AOT_WRITE_TO_DISK, aotWriteToDisk);
203 logger_1.Logger.debug("aotWriteToDisk set to " + aotWriteToDisk);
204 var printWebpackDependencyTree = getConfigValue(context, '--printWebpackDependencyTree', null, Constants.ENV_PRINT_WEBPACK_DEPENDENCY_TREE, Constants.ENV_PRINT_WEBPACK_DEPENDENCY_TREE.toLowerCase(), null);
205 setProcessEnvVar(Constants.ENV_PRINT_WEBPACK_DEPENDENCY_TREE, printWebpackDependencyTree);
206 logger_1.Logger.debug("printWebpackDependencyTree set to " + printWebpackDependencyTree);
207 var typeCheckOnLint = getConfigValue(context, '--typeCheckOnLint', null, Constants.ENV_TYPE_CHECK_ON_LINT, Constants.ENV_TYPE_CHECK_ON_LINT.toLowerCase(), null);
208 setProcessEnvVar(Constants.ENV_TYPE_CHECK_ON_LINT, typeCheckOnLint);
209 logger_1.Logger.debug("typeCheckOnLint set to " + typeCheckOnLint);
210 var bailOnLintError = getConfigValue(context, '--bailOnLintError', null, Constants.ENV_BAIL_ON_LINT_ERROR, Constants.ENV_BAIL_ON_LINT_ERROR.toLowerCase(), null);
211 setProcessEnvVar(Constants.ENV_BAIL_ON_LINT_ERROR, bailOnLintError);
212 logger_1.Logger.debug("bailOnLintError set to " + bailOnLintError);
213 var enableLint = getConfigValue(context, '--enableLint', null, Constants.ENV_ENABLE_LINT, Constants.ENV_ENABLE_LINT.toLowerCase(), 'true');
214 setProcessEnvVar(Constants.ENV_ENABLE_LINT, enableLint);
215 logger_1.Logger.debug("enableLint set to " + enableLint);
216 var disableLogging = getConfigValue(context, '--disableLogging', null, Constants.ENV_DISABLE_LOGGING, Constants.ENV_DISABLE_LOGGING.toLowerCase(), null);
217 setProcessEnvVar(Constants.ENV_DISABLE_LOGGING, disableLogging);
218 logger_1.Logger.debug("disableLogging set to " + disableLogging);
219 var startWatchTimeout = getConfigValue(context, '--startWatchTimeout', null, Constants.ENV_START_WATCH_TIMEOUT, Constants.ENV_START_WATCH_TIMEOUT.toLowerCase(), '3000');
220 setProcessEnvVar(Constants.ENV_START_WATCH_TIMEOUT, startWatchTimeout);
221 logger_1.Logger.debug("startWatchTimeout set to " + startWatchTimeout);
222 var ngModuleFileNameSuffix = getConfigValue(context, '--ngModuleFileNameSuffix', null, Constants.ENV_NG_MODULE_FILE_NAME_SUFFIX, Constants.ENV_NG_MODULE_FILE_NAME_SUFFIX.toLowerCase(), '.module.ts');
223 setProcessEnvVar(Constants.ENV_NG_MODULE_FILE_NAME_SUFFIX, ngModuleFileNameSuffix);
224 logger_1.Logger.debug("ngModuleFileNameSuffix set to " + ngModuleFileNameSuffix);
225 var polyfillName = getConfigValue(context, '--polyfillFileName', null, Constants.ENV_POLYFILL_FILE_NAME, Constants.ENV_POLYFILL_FILE_NAME.toLowerCase(), 'polyfills.js');
226 setProcessEnvVar(Constants.ENV_POLYFILL_FILE_NAME, polyfillName);
227 logger_1.Logger.debug("polyfillName set to " + polyfillName);
228 var purgeUnusedFonts = getConfigValue(context, '--purgeUnusedFonts', null, Constants.ENV_PURGE_UNUSED_FONTS, Constants.ENV_PURGE_UNUSED_FONTS.toLowerCase(), 'true');
229 setProcessEnvVar(Constants.ENV_PURGE_UNUSED_FONTS, purgeUnusedFonts);
230 logger_1.Logger.debug("purgeUnusedFonts set to " + purgeUnusedFonts);
231 /* Provider Path Stuff */
232 setProcessEnvVar(Constants.ENV_ACTION_SHEET_CONTROLLER_CLASSNAME, 'ActionSheetController');
233 setProcessEnvVar(Constants.ENV_ACTION_SHEET_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'action-sheet', 'action-sheet-controller.js'));
234 setProcessEnvVar(Constants.ENV_ACTION_SHEET_VIEW_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'action-sheet', 'action-sheet.js'));
235 setProcessEnvVar(Constants.ENV_ACTION_SHEET_COMPONENT_PATH, path_1.join(context.ionicAngularDir, 'components', 'action-sheet', 'action-sheet-component.js'));
236 setProcessEnvVar(Constants.ENV_ACTION_SHEET_COMPONENT_FACTORY_PATH, path_1.join(context.ionicAngularDir, 'components', 'action-sheet', 'action-sheet-component.ngfactory.js'));
237 setProcessEnvVar(Constants.ENV_ALERT_CONTROLLER_CLASSNAME, 'AlertController');
238 setProcessEnvVar(Constants.ENV_ALERT_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'alert', 'alert-controller.js'));
239 setProcessEnvVar(Constants.ENV_ALERT_VIEW_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'alert', 'alert.js'));
240 setProcessEnvVar(Constants.ENV_ALERT_COMPONENT_PATH, path_1.join(context.ionicAngularDir, 'components', 'alert', 'alert-component.js'));
241 setProcessEnvVar(Constants.ENV_ALERT_COMPONENT_FACTORY_PATH, path_1.join(context.ionicAngularDir, 'components', 'alert', 'alert-component.ngfactory.js'));
242 setProcessEnvVar(Constants.ENV_APP_ROOT_COMPONENT_PATH, path_1.join(context.ionicAngularDir, 'components', 'app', 'app-root.js'));
243 setProcessEnvVar(Constants.ENV_LOADING_CONTROLLER_CLASSNAME, 'LoadingController');
244 setProcessEnvVar(Constants.ENV_LOADING_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'loading', 'loading-controller.js'));
245 setProcessEnvVar(Constants.ENV_LOADING_VIEW_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'loading', 'loading.js'));
246 setProcessEnvVar(Constants.ENV_LOADING_COMPONENT_PATH, path_1.join(context.ionicAngularDir, 'components', 'loading', 'loading-component.js'));
247 setProcessEnvVar(Constants.ENV_LOADING_COMPONENT_FACTORY_PATH, path_1.join(context.ionicAngularDir, 'components', 'loading', 'loading-component.ngfactory.js'));
248 setProcessEnvVar(Constants.ENV_MODAL_CONTROLLER_CLASSNAME, 'ModalController');
249 setProcessEnvVar(Constants.ENV_MODAL_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'modal', 'modal-controller.js'));
250 setProcessEnvVar(Constants.ENV_MODAL_VIEW_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'modal', 'modal.js'));
251 setProcessEnvVar(Constants.ENV_MODAL_COMPONENT_PATH, path_1.join(context.ionicAngularDir, 'components', 'modal', 'modal-component.js'));
252 setProcessEnvVar(Constants.ENV_MODAL_COMPONENT_FACTORY_PATH, path_1.join(context.ionicAngularDir, 'components', 'modal', 'modal-component.ngfactory.js'));
253 setProcessEnvVar(Constants.ENV_PICKER_CONTROLLER_CLASSNAME, 'PickerController');
254 setProcessEnvVar(Constants.ENV_PICKER_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'picker', 'picker-controller.js'));
255 setProcessEnvVar(Constants.ENV_PICKER_VIEW_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'picker', 'picker.js'));
256 setProcessEnvVar(Constants.ENV_PICKER_COMPONENT_PATH, path_1.join(context.ionicAngularDir, 'components', 'picker', 'picker-component.js'));
257 setProcessEnvVar(Constants.ENV_PICKER_COMPONENT_FACTORY_PATH, path_1.join(context.ionicAngularDir, 'components', 'picker', 'picker-component.ngfactory.js'));
258 setProcessEnvVar(Constants.ENV_POPOVER_CONTROLLER_CLASSNAME, 'PopoverController');
259 setProcessEnvVar(Constants.ENV_POPOVER_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'popover', 'popover-controller.js'));
260 setProcessEnvVar(Constants.ENV_POPOVER_VIEW_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'popover', 'popover.js'));
261 setProcessEnvVar(Constants.ENV_POPOVER_COMPONENT_PATH, path_1.join(context.ionicAngularDir, 'components', 'popover', 'popover-component.js'));
262 setProcessEnvVar(Constants.ENV_POPOVER_COMPONENT_FACTORY_PATH, path_1.join(context.ionicAngularDir, 'components', 'popover', 'popover-component.ngfactory.js'));
263 setProcessEnvVar(Constants.ENV_SELECT_POPOVER_CLASSNAME, 'SelectPopover');
264 setProcessEnvVar(Constants.ENV_SELECT_POPOVER_COMPONENT_PATH, path_1.join(context.ionicAngularDir, 'components', 'select', 'select-popover-component.js'));
265 setProcessEnvVar(Constants.ENV_SELECT_POPOVER_COMPONENT_FACTORY_PATH, path_1.join(context.ionicAngularDir, 'components', 'select', 'select-popover-component.ngfactory.js'));
266 setProcessEnvVar(Constants.ENV_TOAST_CONTROLLER_CLASSNAME, 'ToastController');
267 setProcessEnvVar(Constants.ENV_TOAST_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'toast', 'toast-controller.js'));
268 setProcessEnvVar(Constants.ENV_TOAST_VIEW_CONTROLLER_PATH, path_1.join(context.ionicAngularDir, 'components', 'toast', 'toast.js'));
269 setProcessEnvVar(Constants.ENV_TOAST_COMPONENT_PATH, path_1.join(context.ionicAngularDir, 'components', 'toast', 'toast-component.js'));
270 setProcessEnvVar(Constants.ENV_TOAST_COMPONENT_FACTORY_PATH, path_1.join(context.ionicAngularDir, 'components', 'toast', 'toast-component.ngfactory.js'));
271 var parseDeepLinks = getConfigValue(context, '--parseDeepLinks', null, Constants.ENV_PARSE_DEEPLINKS, Constants.ENV_PARSE_DEEPLINKS.toLowerCase(), 'true');
272 setProcessEnvVar(Constants.ENV_PARSE_DEEPLINKS, parseDeepLinks);
273 logger_1.Logger.debug("parseDeepLinks set to " + parseDeepLinks);
274 var skipReadIonicAngular = getConfigValue(context, '--skipIonicAngularVersion', null, Constants.ENV_SKIP_IONIC_ANGULAR_VERSION, Constants.ENV_SKIP_IONIC_ANGULAR_VERSION.toLowerCase(), 'false');
275 setProcessEnvVar(Constants.ENV_SKIP_IONIC_ANGULAR_VERSION, skipReadIonicAngular);
276 logger_1.Logger.debug("skipReadIonicAngular set to " + skipReadIonicAngular);
277 if (!isValidBundler(context.bundler)) {
278 context.bundler = bundlerStrategy(context);
279 logger_1.Logger.debug("bundler set to " + context.bundler);
280 }
281 context.inlineTemplates = true;
282 checkDebugMode();
283 if (helpers_1.getBooleanPropertyValue(Constants.ENV_DISABLE_LOGGING)) {
284 console.debug = function () { };
285 console.error = function () { };
286 console.info = function () { };
287 console.log = function () { };
288 console.trace = function () { };
289 console.warn = function () { };
290 }
291 return context;
292}
293exports.generateContext = generateContext;
294function getUserConfigFile(context, task, userConfigFile) {
295 if (!context) {
296 context = generateContext(context);
297 }
298 if (userConfigFile) {
299 return path_1.resolve(userConfigFile);
300 }
301 var defaultConfig = getConfigValue(context, task.fullArg, task.shortArg, task.envVar, task.packageConfig, null);
302 if (defaultConfig) {
303 return path_1.join(context.rootDir, defaultConfig);
304 }
305 return null;
306}
307exports.getUserConfigFile = getUserConfigFile;
308function fillConfigDefaults(userConfigFile, defaultConfigFile) {
309 var userConfig = null;
310 if (userConfigFile) {
311 try {
312 // check if exists first, so we can print a more specific error message
313 // since required config could also throw MODULE_NOT_FOUND
314 fs_extra_1.statSync(userConfigFile);
315 // create a fresh copy of the config each time
316 userConfig = require(userConfigFile);
317 // if user config returns a function call it to determine proper object
318 if (typeof userConfig === 'function') {
319 userConfig = userConfig();
320 }
321 }
322 catch (e) {
323 if (e.code === 'ENOENT') {
324 console.error("Config file \"" + userConfigFile + "\" not found. Using defaults instead.");
325 }
326 else {
327 console.error("There was an error in config file \"" + userConfigFile + "\". Using defaults instead.");
328 console.error(e);
329 }
330 }
331 }
332 var defaultConfig = require(path_1.join('..', '..', 'config', defaultConfigFile));
333 // create a fresh copy of the config each time
334 // always assign any default values which were not already supplied by the user
335 return helpers_1.objectAssign({}, defaultConfig, userConfig);
336}
337exports.fillConfigDefaults = fillConfigDefaults;
338function bundlerStrategy(context) {
339 return Constants.BUNDLER_WEBPACK;
340}
341exports.bundlerStrategy = bundlerStrategy;
342function isValidBundler(bundler) {
343 return bundler === Constants.BUNDLER_WEBPACK;
344}
345function getConfigValue(context, argFullName, argShortName, envVarName, packageConfigProp, defaultValue) {
346 if (!context) {
347 context = generateContext(context);
348 }
349 // first see if the value was set in the command-line args
350 var argVal = getArgValue(argFullName, argShortName);
351 if (argVal !== null) {
352 return argVal;
353 }
354 // next see if it was set in the environment variables
355 // which also checks if it was set in the package.json config property
356 var envVar = getProcessEnvVar(envVarName);
357 if (envVar !== null) {
358 return envVar;
359 }
360 var packageConfig = getPackageJsonConfig(context, packageConfigProp);
361 if (packageConfig !== null) {
362 return packageConfig;
363 }
364 // return the default if nothing above was found
365 return defaultValue;
366}
367exports.getConfigValue = getConfigValue;
368function getArgValue(fullName, shortName) {
369 for (var i = 2; i < processArgv.length; i++) {
370 var arg = processArgv[i];
371 if (arg === fullName || (shortName && arg === shortName)) {
372 var val = processArgv[i + 1];
373 if (val !== undefined && val !== '') {
374 return val;
375 }
376 }
377 }
378 return null;
379}
380function hasConfigValue(context, argFullName, argShortName, envVarName, defaultValue) {
381 if (!context) {
382 context = generateContext(context);
383 }
384 if (hasArg(argFullName, argShortName)) {
385 return true;
386 }
387 // next see if it was set in the environment variables
388 // which also checks if it was set in the package.json config property
389 var envVar = getProcessEnvVar(envVarName);
390 if (envVar !== null) {
391 return true;
392 }
393 var packageConfig = getPackageJsonConfig(context, envVarName);
394 if (packageConfig !== null) {
395 return true;
396 }
397 // return the default if nothing above was found
398 return defaultValue;
399}
400exports.hasConfigValue = hasConfigValue;
401function hasArg(fullName, shortName) {
402 if (shortName === void 0) { shortName = null; }
403 return !!(processArgv.some(function (a) { return a.toLowerCase() === fullName.toLowerCase(); }) ||
404 (shortName !== null && processArgv.some(function (a) { return a.toLowerCase() === shortName.toLowerCase(); })));
405}
406exports.hasArg = hasArg;
407function replacePathVars(context, filePath) {
408 if (Array.isArray(filePath)) {
409 return filePath.map(function (f) { return replacePathVars(context, f); });
410 }
411 if (typeof filePath === 'object') {
412 var clonedFilePaths = Object.assign({}, filePath);
413 for (var key in clonedFilePaths) {
414 clonedFilePaths[key] = replacePathVars(context, clonedFilePaths[key]);
415 }
416 return clonedFilePaths;
417 }
418 return filePath.replace('{{SRC}}', context.srcDir)
419 .replace('{{WWW}}', context.wwwDir)
420 .replace('{{TMP}}', context.tmpDir)
421 .replace('{{ROOT}}', context.rootDir)
422 .replace('{{BUILD}}', context.buildDir);
423}
424exports.replacePathVars = replacePathVars;
425function getNodeBinExecutable(context, cmd) {
426 var cmdPath = path_1.join(context.rootDir, 'node_modules', '.bin', cmd);
427 try {
428 fs_extra_1.accessSync(cmdPath);
429 }
430 catch (e) {
431 cmdPath = null;
432 }
433 return cmdPath;
434}
435exports.getNodeBinExecutable = getNodeBinExecutable;
436var checkedDebug = false;
437function checkDebugMode() {
438 if (!checkedDebug) {
439 if (hasArg('--debug') || getProcessEnvVar('ionic_debug_mode') === 'true') {
440 processEnv.ionic_debug_mode = 'true';
441 }
442 checkedDebug = true;
443 }
444}
445function isDebugMode() {
446 return (processEnv.ionic_debug_mode === 'true');
447}
448exports.isDebugMode = isDebugMode;
449var processArgv;
450function setProcessArgs(argv) {
451 processArgv = argv;
452}
453exports.setProcessArgs = setProcessArgs;
454setProcessArgs(process.argv);
455function addArgv(value) {
456 processArgv.push(value);
457}
458exports.addArgv = addArgv;
459var processEnv;
460function setProcessEnv(env) {
461 processEnv = env;
462}
463exports.setProcessEnv = setProcessEnv;
464setProcessEnv(process.env);
465function setProcessEnvVar(key, value) {
466 if (key && value) {
467 processEnv[key] = value;
468 }
469}
470exports.setProcessEnvVar = setProcessEnvVar;
471function getProcessEnvVar(key) {
472 var val = processEnv[key];
473 if (val !== undefined) {
474 if (val === 'true') {
475 return true;
476 }
477 if (val === 'false') {
478 return false;
479 }
480 return val;
481 }
482 return null;
483}
484exports.getProcessEnvVar = getProcessEnvVar;
485var processCwd;
486function setCwd(cwd) {
487 processCwd = cwd;
488}
489exports.setCwd = setCwd;
490setCwd(process.cwd());
491function getPackageJsonConfig(context, key) {
492 var packageJsonData = getAppPackageJsonData(context);
493 if (packageJsonData && packageJsonData.config) {
494 var val = packageJsonData.config[key];
495 if (val !== undefined) {
496 if (val === 'true') {
497 return true;
498 }
499 if (val === 'false') {
500 return false;
501 }
502 return val;
503 }
504 }
505 return null;
506}
507exports.getPackageJsonConfig = getPackageJsonConfig;
508var appPackageJsonData = null;
509function setAppPackageJsonData(data) {
510 appPackageJsonData = data;
511}
512exports.setAppPackageJsonData = setAppPackageJsonData;
513function getAppPackageJsonData(context) {
514 if (!appPackageJsonData) {
515 try {
516 appPackageJsonData = fs_extra_1.readJSONSync(path_1.join(context.rootDir, 'package.json'));
517 }
518 catch (e) { }
519 }
520 return appPackageJsonData;
521}