From 73899b27840a28e03926377831fa0fd59a7a9c50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81rgio=20Ramos?= Date: Thu, 25 May 2017 14:41:29 +0100 Subject: [PATCH] fix(cp-frontend): gracefully handle multiple postinstall executions checks if the webpack backup exists already before trying to create it --- packages/cp-frontend/package.json | 2 ++ packages/cp-frontend/scripts/postinstall.js | 39 ++++++++------------- packages/cp-frontend/yarn.lock | 34 ++++++++++++++++++ 3 files changed, 50 insertions(+), 25 deletions(-) diff --git a/packages/cp-frontend/package.json b/packages/cp-frontend/package.json index 04f39aa1..f4348e95 100644 --- a/packages/cp-frontend/package.json +++ b/packages/cp-frontend/package.json @@ -41,6 +41,7 @@ "unitcalc": "^1.0.4" }, "devDependencies": { + "apr-main": "^1.0.7", "babel-plugin-inline-react-svg": "^0.4.0", "babel-plugin-styled-components": "^1.1.4", "babel-preset-joyent-portal": "^1.0.0", @@ -52,6 +53,7 @@ "jest-matcher-utils": "^20.0.3", "jest-snapshot": "^20.0.3", "jest-styled-components": "^2.0.0", + "mz": "^2.6.0", "npm-run-all": "^4.0.2", "react-scripts": "^1.0.0", "react-test-renderer": "^15.5.4", diff --git a/packages/cp-frontend/scripts/postinstall.js b/packages/cp-frontend/scripts/postinstall.js index 8c47c9a1..0543588f 100644 --- a/packages/cp-frontend/scripts/postinstall.js +++ b/packages/cp-frontend/scripts/postinstall.js @@ -1,7 +1,11 @@ -const fs = require('fs'); +const { readFile, writeFile, exists } = require('mz/fs'); +const main = require('apr-main'); const path = require('path'); // TODO: this will need to happen for prod and test too + +const enhancedConfigPath = path.join(__dirname, './webpack.config.dev.js'); + const configPath = path.join( __dirname, '../node_modules/react-scripts/config/webpack.config.dev.js' @@ -10,30 +14,15 @@ const orignalConfigPath = path.join( __dirname, '../node_modules/react-scripts/config/webpack.config.dev.original.js' ); -const enhancedConfigPath = path.join(__dirname, './webpack.config.dev.js'); -// bit of healthy callback hell for making it spicy -fs.readFile(configPath, (error, orignalConfig) => { - if (error) { - console.log('Original config read error', error); - } else { - fs.writeFile(orignalConfigPath, orignalConfig, error => { - if (error) { - console.log('Original config write error', error); - } else { - fs.readFile(enhancedConfigPath, (error, enhancedConfig) => { - if (error) { - console.log('Enhanced config read error', error); - } else { - fs.writeFile(configPath, enhancedConfig, error => { - if (error) { - console.log('Enhanced config write error', error); - } - }); - } - }); - } - }); +main((async () => { + const orignalConfigPathExists = await exists(orignalConfigPath); + + if (!orignalConfigPathExists) { + const orignalConfig = await readFile(configPath, 'utf-8'); + await writeFile(orignalConfigPath, orignalConfig); } -}); + const enhancedConfig = await readFile(enhancedConfigPath); + await writeFile(configPath, enhancedConfig) +})()); diff --git a/packages/cp-frontend/yarn.lock b/packages/cp-frontend/yarn.lock index 024b5abc..9ec95d57 100644 --- a/packages/cp-frontend/yarn.lock +++ b/packages/cp-frontend/yarn.lock @@ -147,6 +147,10 @@ ansi-styles@^3.0.0: dependencies: color-convert "^1.0.0" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + anymatch@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" @@ -190,6 +194,12 @@ append-transform@^0.4.0: dependencies: default-require-extensions "^1.0.0" +apr-main@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/apr-main/-/apr-main-1.0.7.tgz#4f2592e20cb236b09c3c3d98a95088fbcc5fad4d" + dependencies: + lodash.isfunction "^3.0.8" + aproba@^1.0.3: version "1.1.1" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" @@ -4114,6 +4124,10 @@ lodash.isequal@^4.1.1: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" +lodash.isfunction@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz#4db709fc81bc4a8fd7127a458a5346c5cdce2c6b" + lodash.isobject@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" @@ -4359,6 +4373,14 @@ mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" +mz@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.6.0.tgz#c8b8521d958df0a4f2768025db69c719ee4ef1ce" + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@^2.3.0: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" @@ -6575,6 +6597,18 @@ text-table@0.2.0, text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + dependencies: + any-promise "^1.0.0" + throat@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-3.0.0.tgz#e7c64c867cbb3845f10877642f7b60055b8ec0d6"