|
1 | 1 | const childProcess = require("child_process"); |
| 2 | +const EOL = require("os").EOL; |
2 | 3 | const now = new Date().toISOString(); |
3 | 4 |
|
| 5 | +const CONFIG_JSON_PATH = "config/config.json"; |
| 6 | + |
| 7 | +const ENVIRONMENTS = { |
| 8 | + live: "live", |
| 9 | + dev: "dev" |
| 10 | +}; |
| 11 | + |
| 12 | +const GA_TRACKING_IDS = { |
| 13 | + [ENVIRONMENTS.dev]: "UA-111455-51", |
| 14 | + [ENVIRONMENTS.live]: "UA-111455-44" |
| 15 | +}; |
| 16 | + |
| 17 | +const CONFIG_DATA = { |
| 18 | + filePath: "config/config.json", |
| 19 | + gaKey: "GA_TRACKING_ID" |
| 20 | +} |
| 21 | + |
4 | 22 | function shallowCopy(obj) { |
5 | 23 | var result = {}; |
6 | 24 | Object.keys(obj).forEach(function (key) { |
@@ -191,17 +209,43 @@ module.exports = function (grunt) { |
191 | 209 | grunt.file.write("package.json", JSON.stringify(packageJson, null, " ")); |
192 | 210 | }); |
193 | 211 |
|
| 212 | + const setConfig = (key, value) => { |
| 213 | + const configJson = grunt.file.readJSON(CONFIG_DATA.filePath); |
| 214 | + configJson[key] = value; |
| 215 | + const stringConfigContent = JSON.stringify(configJson, null, " ") + EOL; |
| 216 | + grunt.file.write(CONFIG_DATA.filePath, stringConfigContent); |
| 217 | + } |
| 218 | + |
| 219 | + grunt.registerTask("set_live_ga_id", function() { |
| 220 | + setConfig(CONFIG_DATA.gaKey, GA_TRACKING_IDS[ENVIRONMENTS.live]); |
| 221 | + }); |
| 222 | + |
| 223 | + grunt.registerTask("set_dev_ga_id", function() { |
| 224 | + setConfig(CONFIG_DATA.gaKey, GA_TRACKING_IDS[ENVIRONMENTS.dev]); |
| 225 | + }); |
| 226 | + |
| 227 | + grunt.registerTask("verify_live_ga_id", function() { |
| 228 | + var configJson = grunt.file.readJSON(CONFIG_DATA.filePath); |
| 229 | + |
| 230 | + if(configJson[CONFIG_DATA.gaKey] !== GA_TRACKING_IDS[ENVIRONMENTS.live]) { |
| 231 | + throw new Error("Google Analytics id is not configured correctly."); |
| 232 | + } |
| 233 | + }); |
| 234 | + |
194 | 235 | grunt.registerTask("test", ["ts:devall", "shell:npm_test"]); |
195 | 236 | grunt.registerTask("pack", [ |
196 | 237 | "clean", |
197 | 238 | "ts:release_build", |
198 | 239 | "shell:npm_test", |
199 | 240 |
|
200 | 241 | "set_package_version", |
| 242 | + "set_live_ga_id", |
| 243 | + "verify_live_ga_id", |
201 | 244 | "shell:build_package", |
202 | 245 |
|
203 | 246 | "copy:package_to_drop_folder", |
204 | | - "copy:package_to_qa_drop_folder" |
| 247 | + "copy:package_to_qa_drop_folder", |
| 248 | + "set_dev_ga_id" |
205 | 249 | ]); |
206 | 250 | grunt.registerTask("lint", ["tslint:build"]); |
207 | 251 | grunt.registerTask("all", ["clean", "test", "lint"]); |
|
0 commit comments