diff --git a/gulpfile.js b/gulpfile.js
index b514d982..5cde0f94 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -42,22 +42,6 @@ gulp.task('setupNpm', function () {
setIosNpmOrDev('npm')
})
-// TODO: does not work. need to revise and update package.json -> semantic-release
-gulp.task('update-plugin-xml-version', function () {
- // first match only!
- var PLUGIN_XML_VERSION_REGEX = /^\s*version=\"[\d\.]*\"\>$/m // eslint-disable-line
- var versionNumber = require('./package.json').version
-
- // this will break if plugin.xml is not formatted exactly as we expect
- // so you might end up needing to fix the regex
- for (var target of [ '.xml', '.template.xml' ]) {
- var pluginXML = fs.readFileSync('plugin' + target, 'utf8')
- var newVersionXML = ` version="${versionNumber}">`
- pluginXML = pluginXML.replace(PLUGIN_XML_VERSION_REGEX, newVersionXML)
- fs.writeFileSync('plugin' + target, pluginXML)
- }
-})
-
function getDevPluginXML () {
// generate plugin.xml for local development
// here we reference the frameworks instead of all the files directly
diff --git a/package.json b/package.json
index d3816b82..7dad8756 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,7 @@
"scripts": {
"commitmsg": "validate-commit-msg",
"prerelease": "gulp prod",
- "semantic-release": "semantic-release pre && gulp update-plugin-xml-version && npm publish && semantic-release post"
+ "semantic-release": "semantic-release pre --verifyRelease='./src/scripts/npm/nodeVersion' && npm publish && semantic-release post"
},
"dependencies": {
"mkpath": "^1.0.0",
diff --git a/plugin.template.xml b/plugin.template.xml
index 25c5010e..68d4da5e 100644
--- a/plugin.template.xml
+++ b/plugin.template.xml
@@ -47,8 +47,8 @@ SOFTWARE.
-
-
+
+
diff --git a/plugin.xml b/plugin.xml
index 01f82363..5ecadd04 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -47,8 +47,8 @@ SOFTWARE.
-
-
+
+
diff --git a/src/scripts/lib/android/androidManifest.js b/src/scripts/android/androidManifest.js
similarity index 99%
rename from src/scripts/lib/android/androidManifest.js
rename to src/scripts/android/androidManifest.js
index 221a89a1..079ded0d 100644
--- a/src/scripts/lib/android/androidManifest.js
+++ b/src/scripts/android/androidManifest.js
@@ -2,7 +2,7 @@
// properties
'use strict'
var path = require('path')
- var xmlHelper = require('../sdk/xmlHelper.js')
+ var xmlHelper = require('../lib/xmlHelper.js')
// entry
module.exports = {
@@ -25,7 +25,7 @@
manifest = updateBranchAppLinks(manifest, mainActivityIndex, preferences)
// save new version of the AndroidManifest
- xmlHelper.writeJsonAsXml(manifest, pathToManifest)
+ xmlHelper.writeJsonAsXml(pathToManifest, manifest)
}
// adds to for Branch init and testmode:
diff --git a/src/scripts/afterPrepare.js b/src/scripts/hooks/afterPrepare.js
similarity index 66%
rename from src/scripts/afterPrepare.js
rename to src/scripts/hooks/afterPrepare.js
index ea20110a..613f089e 100644
--- a/src/scripts/afterPrepare.js
+++ b/src/scripts/hooks/afterPrepare.js
@@ -1,12 +1,12 @@
(function () {
// properties
'use strict'
- var configPrefrences = require('./lib/sdk/configXml.js')
- var iosPlist = require('./lib/ios/plist.js')
- var iosCapabilities = require('./lib/ios/capabilities.js')
- var iosAssociatedDomains = require('./lib/ios/associatedDomains.js')
- var iosDevelopmentTeam = require('./lib/ios/developmentTeam.js')
- var androidManifest = require('./lib/android/androidManifest.js')
+ var configPrefrences = require('../sdk/configXml.js')
+ var iosPlist = require('../ios/plist.js')
+ var iosCapabilities = require('../ios/capabilities.js')
+ var iosAssociatedDomains = require('../ios/associatedDomains.js')
+ var iosDevelopmentTeam = require('../ios/developmentTeam.js')
+ var androidManifest = require('../android/androidManifest.js')
var IOS = 'ios'
var ANDROID = 'android'
diff --git a/src/scripts/beforePluginInstall.js b/src/scripts/hooks/beforePluginInstall.js
similarity index 74%
rename from src/scripts/beforePluginInstall.js
rename to src/scripts/hooks/beforePluginInstall.js
index aa393afe..280c89a7 100644
--- a/src/scripts/beforePluginInstall.js
+++ b/src/scripts/hooks/beforePluginInstall.js
@@ -1,7 +1,7 @@
(function () {
// properties
'use strict'
- var nodeDependencies = require('./lib/npm/nodeDependencies.js')
+ var nodeDependencies = require('../npm/nodeDependencies.js')
// entry
module.exports = run
diff --git a/src/scripts/lib/ios/associatedDomains.js b/src/scripts/ios/associatedDomains.js
similarity index 100%
rename from src/scripts/lib/ios/associatedDomains.js
rename to src/scripts/ios/associatedDomains.js
diff --git a/src/scripts/lib/ios/capabilities.js b/src/scripts/ios/capabilities.js
similarity index 100%
rename from src/scripts/lib/ios/capabilities.js
rename to src/scripts/ios/capabilities.js
diff --git a/src/scripts/lib/ios/developmentTeam.js b/src/scripts/ios/developmentTeam.js
similarity index 100%
rename from src/scripts/lib/ios/developmentTeam.js
rename to src/scripts/ios/developmentTeam.js
diff --git a/src/scripts/lib/ios/plist.js b/src/scripts/ios/plist.js
similarity index 100%
rename from src/scripts/lib/ios/plist.js
rename to src/scripts/ios/plist.js
diff --git a/src/scripts/lib/fileHelper.js b/src/scripts/lib/fileHelper.js
new file mode 100644
index 00000000..1b38967f
--- /dev/null
+++ b/src/scripts/lib/fileHelper.js
@@ -0,0 +1,29 @@
+(function () {
+ // properties
+ 'use strict'
+ var fs = require('fs')
+
+ // entry
+ module.exports = {
+ readFile: readFile,
+ writeFile: writeFile
+ }
+
+ // read file
+ function readFile (file) {
+ try {
+ return fs.readFileSync(file, 'utf8')
+ } catch (err) {
+ throw new Error('BRANCH SDK: Cannot read file ' + file)
+ }
+ }
+
+ // write file
+ function writeFile (file, content) {
+ try {
+ fs.writeFileSync(file, content, 'utf8')
+ } catch (err) {
+ throw new Error('BRANCH SDK: Cannot write file ' + file + ' with content ' + content)
+ }
+ }
+})()
diff --git a/src/scripts/lib/sdk/xmlHelper.js b/src/scripts/lib/xmlHelper.js
old mode 100755
new mode 100644
similarity index 64%
rename from src/scripts/lib/sdk/xmlHelper.js
rename to src/scripts/lib/xmlHelper.js
index fb51bc15..5d58f5d9
--- a/src/scripts/lib/sdk/xmlHelper.js
+++ b/src/scripts/lib/xmlHelper.js
@@ -11,35 +11,37 @@
}
// read from xml file
- function readXmlAsJson (filePath) {
+ function readXmlAsJson (file) {
var xmlData
var xmlParser
var parsedData
try {
- xmlData = fs.readFileSync(filePath)
+ xmlData = fs.readFileSync(file)
xmlParser = new xml2js.Parser()
xmlParser.parseString(xmlData, function (err, data) {
if (!err && data) {
parsedData = data
}
})
- } catch (err) {}
+ } catch (err) {
+ throw new Error('BRANCH SDK: Cannot write file ' + file)
+ }
return parsedData
}
// write to xml file
- function writeJsonAsXml (jsData, filePath, options) {
+ function writeJsonAsXml (file, content, options) {
var xmlBuilder = new xml2js.Builder(options)
- var changedXmlData = xmlBuilder.buildObject(jsData)
+ var changedXmlData = xmlBuilder.buildObject(content)
var isSaved = true
try {
- fs.writeFileSync(filePath, changedXmlData)
+ fs.writeFileSync(file, changedXmlData)
} catch (err) {
- console.error(err)
isSaved = false
+ throw new Error('BRANCH SDK: Cannot write file ' + file)
}
return isSaved
diff --git a/src/scripts/lib/npm/nodeDependencies.js b/src/scripts/npm/nodeDependencies.js
similarity index 100%
rename from src/scripts/lib/npm/nodeDependencies.js
rename to src/scripts/npm/nodeDependencies.js
diff --git a/src/scripts/npm/nodeVersion.js b/src/scripts/npm/nodeVersion.js
new file mode 100644
index 00000000..19fd9d05
--- /dev/null
+++ b/src/scripts/npm/nodeVersion.js
@@ -0,0 +1,59 @@
+(function () {
+ var path = require('path')
+ var fileHelper = require('../lib/fileHelper.js')
+ var FILES = ['package.json', 'plugin.xml', 'plugin.template.xml']
+
+ module.exports = updateNpmVersion
+
+ // updates the npm version in semantic-release pre
+ function updateNpmVersion (pluginConfig, config, callback) {
+ var files = readFilePaths(FILES)
+ var version = config.nextRelease.version
+
+ for (var i = 0; i < files.length; i++) {
+ var file = files[i]
+ var content = readContent(file)
+
+ content = updateVersion(file, content, version)
+ saveContent(file, content)
+ }
+ }
+
+ function readContent (file) {
+ return isFileXml(file) ? fileHelper.readFile(file) : JSON.parse(fileHelper.readFile(file))
+ }
+
+ function updateVersion (file, content, version) {
+ var prev = /id="branch-cordova-sdk"[\s]*version="\d+\.\d+\.\d+"/mgi
+ var next = 'id="branch-cordova-sdk"\n version="' + version + '"'
+
+ try {
+ if (isFileXml(file)) {
+ content = content.replace(prev, next)
+ } else {
+ content.version = version
+ }
+ } catch (e) {
+ throw new Error('BRANCH SDK: update to update npm version with file ' + file)
+ }
+ return content
+ }
+
+ function saveContent (file, content) {
+ return isFileXml(file) ? fileHelper.writeFile(file, content) : fileHelper.writeFile(file, JSON.stringify(content, null, 2))
+ }
+
+ function isFileXml (file) {
+ return file.indexOf('xml') > 0
+ }
+
+ function readFilePaths (files) {
+ var locations = []
+ for (var i = 0; i < files.length; i++) {
+ var file = files[i]
+ var location = path.join(__dirname, '../../../', file)
+ locations.push(location)
+ }
+ return locations
+ }
+})()
diff --git a/src/scripts/lib/sdk/configXml.js b/src/scripts/sdk/configXml.js
similarity index 99%
rename from src/scripts/lib/sdk/configXml.js
rename to src/scripts/sdk/configXml.js
index 74e84995..0563ed39 100644
--- a/src/scripts/lib/sdk/configXml.js
+++ b/src/scripts/sdk/configXml.js
@@ -2,7 +2,7 @@
// properties
'use strict'
var path = require('path')
- var xmlHelper = require('./xmlHelper.js')
+ var xmlHelper = require('../lib/xmlHelper.js')
// entry
module.exports = {