From a92876f278a190720ee181f79f8246c95e0bda4a Mon Sep 17 00:00:00 2001 From: Dimitar Kerezov Date: Wed, 28 Feb 2018 14:00:05 +0200 Subject: [PATCH] fix: allow snapshot only in release --- lib/after-prepare.js | 8 +++++++- lib/before-prepareJS.js | 7 ++++--- lib/before-watch.js | 5 +++-- lib/compiler.js | 12 ++++++++++-- lib/utils.js | 6 +++--- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/lib/after-prepare.js b/lib/after-prepare.js index 098ac100..85da7ddc 100644 --- a/lib/after-prepare.js +++ b/lib/after-prepare.js @@ -3,7 +3,13 @@ const utils = require("./utils"); module.exports = function ($mobileHelper, $projectData, hookArgs) { const env = hookArgs.env || {}; - if (env.snapshot && utils.shouldSnapshot($mobileHelper, hookArgs.platform, hookArgs.appFilesUpdaterOptions.bundle)) { + const shouldSnapshotOptions = { + platform: hookArgs.platform, + bundle: hookArgs.appFilesUpdaterOptions.bundle, + release: hookArgs.appFilesUpdaterOptions.release + }; + + if (env.snapshot && utils.shouldSnapshot($mobileHelper, shouldSnapshotOptions)) { snapshotGenerator.installSnapshotArtefacts($projectData.projectDir); } } diff --git a/lib/before-prepareJS.js b/lib/before-prepareJS.js index c490955a..a8a0eca1 100644 --- a/lib/before-prepareJS.js +++ b/lib/before-prepareJS.js @@ -1,14 +1,15 @@ const { runWebpackCompiler } = require("./compiler"); -module.exports = function ($mobileHelper, $projectData, hookArgs) { +module.exports = function ($mobileHelper, $projectData, $logger, hookArgs) { const env = hookArgs.config.env || {}; const platform = hookArgs.config.platform; const appFilesUpdaterOptions = hookArgs.config.appFilesUpdaterOptions; const config = { env, platform, - bundle: appFilesUpdaterOptions.bundle + bundle: appFilesUpdaterOptions.bundle, + release: appFilesUpdaterOptions.release, }; - const result = config.bundle && runWebpackCompiler.bind(runWebpackCompiler, config, $mobileHelper, $projectData, hookArgs); + const result = config.bundle && runWebpackCompiler.bind(runWebpackCompiler, config, $mobileHelper, $projectData, $logger, hookArgs); return result; } diff --git a/lib/before-watch.js b/lib/before-watch.js index e554ac28..6e989d4b 100644 --- a/lib/before-watch.js +++ b/lib/before-watch.js @@ -1,6 +1,6 @@ const { runWebpackCompiler } = require("./compiler"); -module.exports = function ($mobileHelper, $projectData, hookArgs) { +module.exports = function ($mobileHelper, $projectData, $logger, hookArgs) { if (hookArgs.config) { const appFilesUpdaterOptions = hookArgs.config.appFilesUpdaterOptions; if (appFilesUpdaterOptions.bundle) { @@ -11,10 +11,11 @@ module.exports = function ($mobileHelper, $projectData, hookArgs) { env, platform, bundle: appFilesUpdaterOptions.bundle, + release: appFilesUpdaterOptions.release, watch: true }; - return runWebpackCompiler(config, $mobileHelper, $projectData, hookArgs); + return runWebpackCompiler(config, $mobileHelper, $projectData, $logger, hookArgs); })); } } diff --git a/lib/compiler.js b/lib/compiler.js index 04b14c8c..8dbf022d 100644 --- a/lib/compiler.js +++ b/lib/compiler.js @@ -9,12 +9,19 @@ const { AppDirectoryLocation } = require("./constants"); let hasBeenInvoked = false; let webpackProcess = null; +let hasLoggedSnapshotWarningMessage = false; + +function logdSnapshotWarningMessage($logger) { + if (!hasLoggedSnapshotWarningMessage) { + $logger.warn("Stripping the snapshot flag. Bear in mind that snapshot is only available in release builds and is NOT available on Windows systems."); + } +} exports.getWebpackProcess = function getWebpackProcess() { return webpackProcess; } -exports.runWebpackCompiler = function runWebpackCompiler(config, $mobileHelper, $projectData, hookArgs, originalArgs, originalMethod) { +exports.runWebpackCompiler = function runWebpackCompiler(config, $mobileHelper, $projectData, $logger, hookArgs) { if (config.bundle) { return new Promise(function (resolveBase, rejectBase) { if (webpackProcess) { @@ -37,7 +44,8 @@ exports.runWebpackCompiler = function runWebpackCompiler(config, $mobileHelper, const envFlagNames = Object.keys(config.env).concat([config.platform.toLowerCase()]); const snapshotEnvIndex = envFlagNames.indexOf("snapshot"); - if (snapshotEnvIndex !== -1 && !utils.shouldSnapshot($mobileHelper, config.platform, config.bundle)) { + if (snapshotEnvIndex !== -1 && !utils.shouldSnapshot($mobileHelper, config)) { + logdSnapshotWarningMessage($logger); envFlagNames.splice(snapshotEnvIndex, 1); } diff --git a/lib/utils.js b/lib/utils.js index 079df2f0..648133c8 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,9 +1,9 @@ const os = require("os"); -function shouldSnapshot($mobileHelper, platform, bundle) { - const platformSupportsSnapshot = $mobileHelper.isAndroidPlatform(platform); +function shouldSnapshot($mobileHelper, config) { + const platformSupportsSnapshot = $mobileHelper.isAndroidPlatform(config.platform); const osSupportsSnapshot = os.type() !== "Windows_NT"; - return bundle && platformSupportsSnapshot && osSupportsSnapshot; + return config.bundle && config.release && platformSupportsSnapshot && osSupportsSnapshot; } module.exports.shouldSnapshot = shouldSnapshot;