From 4a7a2dd0be6bf4edbfe46efc4fe73862bf97e3a8 Mon Sep 17 00:00:00 2001 From: Shankari Date: Mon, 13 Jul 2020 08:12:57 -0700 Subject: [PATCH 1/4] Fix issues in the hook scripts + `mkdir -p` before installing the locales + correct import of elementTree --- hooks/after_platform_add/ios/ios_copy_locales.js | 4 ++-- hooks/before_build/android/android_copy_locales.js | 4 ++-- hooks/before_build/android/android_set_provider.js | 5 +++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/hooks/after_platform_add/ios/ios_copy_locales.js b/hooks/after_platform_add/ios/ios_copy_locales.js index 88bbd8b00..8a1d9eaa3 100755 --- a/hooks/after_platform_add/ios/ios_copy_locales.js +++ b/hooks/after_platform_add/ios/ios_copy_locales.js @@ -2,6 +2,7 @@ var fs = require('fs-extra'); var path = require('path'); +var et = require('elementtree'); const LOG_NAME = "Copying locales: "; @@ -14,7 +15,6 @@ module.exports = function (context) { console.log(LOG_NAME + "Retrieving application name...") var config_xml = path.join(context.opts.projectRoot, 'config.xml'); - var et = context.requireCordovaModule('elementtree'); var data = fs.readFileSync(config_xml).toString(); // If no data then no config.xml if (data) { @@ -42,7 +42,7 @@ module.exports = function (context) { var platformlproj = platformRes + lproj; if (!fs.existsSync(platformlproj)) { console.log(LOG_NAME + platformlproj + "does not exist, I will create it."); - fs.mkdirSync(platformlproj); + fs.mkdirSync(platformlproj, {recursive: true} ); } fs.copySync(lprojFolder, platformlproj); diff --git a/hooks/before_build/android/android_copy_locales.js b/hooks/before_build/android/android_copy_locales.js index aa7ed336d..c06c515c9 100755 --- a/hooks/before_build/android/android_copy_locales.js +++ b/hooks/before_build/android/android_copy_locales.js @@ -30,7 +30,7 @@ module.exports = function (context) { var platformValues = platformRes + values; if (!fs.existsSync(platformValues)) { console.log(LOG_NAME + platformValues + "does not exist, I will create it."); - fs.mkdirSync(platformValues); + fs.mkdirSync(platformValues, {recursive: true}); } fs.copySync(valuesFolder, platformValues); @@ -48,4 +48,4 @@ module.exports = function (context) { console.log(LOG_NAME + languagei18n + " not found, I will continue.") } }); -} \ No newline at end of file +} diff --git a/hooks/before_build/android/android_set_provider.js b/hooks/before_build/android/android_set_provider.js index 4d55618c4..39df143b7 100755 --- a/hooks/before_build/android/android_set_provider.js +++ b/hooks/before_build/android/android_set_provider.js @@ -4,6 +4,8 @@ var fs = require('fs'); var path = require('path'); +var et = require('elementtree'); + const PROVIDER = "edu.berkeley.eecs.emission.provider"; const ACCOUNT_TYPE = "eecs.berkeley.edu"; const LOG_NAME = "Changing Providers: "; @@ -79,7 +81,6 @@ module.exports = function (context) { console.log(LOG_NAME + "Retrieving application name...") var config_xml = path.join(context.opts.projectRoot, 'config.xml'); - var et = context.requireCordovaModule('elementtree'); var data = fs.readFileSync(config_xml).toString(); // If no data then no config.xml if (data) { @@ -111,4 +112,4 @@ module.exports = function (context) { } else { throw new Error(LOG_NAME + "Could not retrieve application name."); } -} \ No newline at end of file +} From 0ab33570d208a9803d842736a26e6e68db85561e Mon Sep 17 00:00:00 2001 From: Shankari Date: Mon, 13 Jul 2020 16:35:03 -0700 Subject: [PATCH 2/4] Add a new hook to have the push plugin use APNS by default So that the workaround in https://github.com/e-mission/e-mission-docs/issues/437#issuecomment-513506146 doesn't need to be manually applied any more --- hooks/before_prepare/ios_use_apns_token.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100755 hooks/before_prepare/ios_use_apns_token.js diff --git a/hooks/before_prepare/ios_use_apns_token.js b/hooks/before_prepare/ios_use_apns_token.js new file mode 100755 index 000000000..0c1b808f5 --- /dev/null +++ b/hooks/before_prepare/ios_use_apns_token.js @@ -0,0 +1,22 @@ +#!/usr/bin/env node + +'use strict' + +var fs = require('fs-extra'); + +const LOG_NAME = "Setting iOS push: FCM = false, APNS = true"; +const CONF_FILE = "GoogleServicesInfo.plist"; + +module.exports = function (context) { + const FCM_TOKEN_SETTING = new RegEx("IS_GCM_ENABLED(\n\\s*)", "g"); + if (!ctx.opts.platforms.includes('ios')) return; + if (fs.existsSync(confFile)) { + console.log(LOG_NAME + confFile + " found, modifying it"); + var regEx = new RegExp(currentName, 'g'); + + var data = fs.readFileSync(confFile, 'utf8'); + var replacedData = data.replace(regEx, "IS_GCM_ENABLED$1"); + fs.writeFileSync(CONF_FILE, replacedData, 'utf8'); + console.log(LOG_NAME + confFile + " modified file written"); + } +} From 16f70c8ae5c0bd1d812ec1d50fef2ed868c9f889 Mon Sep 17 00:00:00 2001 From: Shankari Date: Mon, 13 Jul 2020 16:36:50 -0700 Subject: [PATCH 3/4] Fixed the android check to look simpler And match the newly added hook in 0ab33570d208a9803d842736a26e6e68db85561e --- hooks/before_build/android/android_set_provider.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hooks/before_build/android/android_set_provider.js b/hooks/before_build/android/android_set_provider.js index 39df143b7..4583a2600 100755 --- a/hooks/before_build/android/android_set_provider.js +++ b/hooks/before_build/android/android_set_provider.js @@ -76,8 +76,7 @@ var changeAccountTypeAndProvider = function (file, accountType, providerName, ne module.exports = function (context) { // If Android platform is not installed, don't even execute - if (context.opts.cordova.platforms.indexOf('android') < 0) - return; + if (!ctx.opts.platforms.includes('android')) return; console.log(LOG_NAME + "Retrieving application name...") var config_xml = path.join(context.opts.projectRoot, 'config.xml'); From 015747b7aa2e074660781f89d2ae4228977b4571 Mon Sep 17 00:00:00 2001 From: Shankari Date: Mon, 13 Jul 2020 21:05:41 -0700 Subject: [PATCH 4/4] Fix variable name in hook --- hooks/before_build/android/android_set_provider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/before_build/android/android_set_provider.js b/hooks/before_build/android/android_set_provider.js index 4583a2600..c6a49c2b3 100755 --- a/hooks/before_build/android/android_set_provider.js +++ b/hooks/before_build/android/android_set_provider.js @@ -76,7 +76,7 @@ var changeAccountTypeAndProvider = function (file, accountType, providerName, ne module.exports = function (context) { // If Android platform is not installed, don't even execute - if (!ctx.opts.platforms.includes('android')) return; + if (!context.opts.platforms.includes('android')) return; console.log(LOG_NAME + "Retrieving application name...") var config_xml = path.join(context.opts.projectRoot, 'config.xml');