Last active
March 28, 2018 16:34
-
-
Save kocyigityunus/bcee0ee85ecc406d3381d1aeddda49be to your computer and use it in GitHub Desktop.
ios & android version & build number helper methods
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var fs = require('fs'); | |
const log_enabled = false; | |
// ios - build numarası güncelle -pListLocation -newBuildNumber | |
// ios - versiyon güncelle -pListLocation -newVersion | |
// ios - build numarası bul -pListLocation => buildNumber | |
// ios - versiyon bul -pListLocation => version | |
// android - build numarası güncelle -buildGradleLocation -newBuildNumber | |
// android - versiyon güncelle -buildGradleLocation -newVersion | |
// android - build numarası bul -buildGradleLocation => buildNumber | |
// android - versiyon bul -buildGradleLocation => version | |
const iOSBuildAttributeFinderRegex = /<key>CFBundleVersion<\/key>\n <string>[0-9.]*<\/string>/g; | |
const iOSBuildStringFinderRegex = /<string>[0-9.]*<\/string>/g; | |
const iOSVersionAttributeFinderRegex = /<key>CFBundleShortVersionString<\/key>\n <string>[0-9.]*<\/string>/g; | |
const iOSVersionStringFinderRegex = /<string>[0-9.]*<\/string>/g; | |
const androidBuildFinderRegex = /versionCode [0-9.]*/g; | |
const androidVersionFinderRegex = /versionName .*/g; | |
const findMatches = function (expression, str) { | |
let m; | |
var matches = []; | |
while ((m = expression.exec(str)) !== null) { | |
// This is necessary to avoid infinite loops with zero-width matches | |
if (m.index === expression.lastIndex) { | |
expression.lastIndex++; | |
} | |
// The result can be accessed through the `m`-variable. | |
m.forEach((match, groupIndex) => { | |
//console.log(`Found match, group ${groupIndex}: ${match}`); | |
matches.push(match); | |
}); | |
} | |
return matches; | |
} | |
String.prototype.replaceAll = function(search, replacement) { | |
var target = this; | |
return target.replace(new RegExp(search, 'g'), replacement); | |
}; | |
const iOSUpdateBuildNumber = function(infoPlistLocation, newBuildNumber){ | |
var plistStr = fs.readFileSync(infoPlistLocation, "utf8"); | |
if (log_enabled) console.log('plistStr: ', plistStr); | |
var buildAttribute = findMatches(iOSBuildAttributeFinderRegex, plistStr)[0]; | |
var buildString = findMatches(iOSBuildStringFinderRegex, buildAttribute)[0]; | |
var build = buildString.replace('<string>', '').replace('</string>', ''); | |
if (log_enabled) console.log('buildAttribute: ', buildAttribute); | |
if (log_enabled) console.log('buildString: ', buildString); | |
if (log_enabled) console.log('build: ', build); | |
var oldBuildAttribute = buildAttribute; | |
var newBuildAttribute = buildAttribute.replace(build, newBuildNumber); | |
var newPlistStr = plistStr.replace(oldBuildAttribute, newBuildAttribute); | |
fs.writeFileSync(infoPlistLocation, newPlistStr, "utf8"); | |
console.log('iOSUpdateBuildNumber - işlem ok!'); | |
}; | |
const iOSUpdateVersion = function(infoPlistLocation, newVersion){ | |
var plistStr = fs.readFileSync(infoPlistLocation, "utf8"); | |
if (log_enabled) console.log('plistStr: ', plistStr); | |
var versionAttribute = findMatches(iOSVersionAttributeFinderRegex, plistStr)[0]; | |
var versionString = findMatches(iOSVersionStringFinderRegex, versionAttribute)[0]; | |
var version = versionString.replace('<string>', '').replace('</string>', ''); | |
if (log_enabled) console.log('versionAttribute: ', versionAttribute); | |
if (log_enabled) console.log('versionString: ', versionString); | |
if (log_enabled) console.log('version: ', version); | |
var oldVersionAttribute = versionAttribute; | |
var newVersionAttribute = versionAttribute.replace(version, newVersion); | |
var newPlistStr = plistStr.replace(oldVersionAttribute, newVersionAttribute); | |
fs.writeFileSync(infoPlistLocation, newPlistStr, "utf8"); | |
console.log('iOSUpdateVersion - işlem ok!'); | |
}; | |
const iOSFindBuildNumber = function(infoPlistLocation){ | |
var plistStr = fs.readFileSync(infoPlistLocation, "utf8"); | |
if (log_enabled) console.log('plistStr: ', plistStr); | |
var buildAttribute = findMatches(iOSBuildAttributeFinderRegex, plistStr)[0]; | |
var buildString = findMatches(iOSBuildStringFinderRegex, buildAttribute)[0]; | |
var build = buildString.replace('<string>', '').replace('</string>', '').trim(); | |
return build; | |
}; | |
const iOSFindVersion = function(infoPlistLocation){ | |
var plistStr = fs.readFileSync(infoPlistLocation, "utf8"); | |
if (log_enabled) console.log('plistStr: ', plistStr); | |
var versionAttribute = findMatches(iOSVersionAttributeFinderRegex, plistStr)[0]; | |
var versionString = findMatches(iOSVersionStringFinderRegex, versionAttribute)[0]; | |
var version = versionString.replace('<string>', '').replace('</string>', '').trim(); | |
return version; | |
}; | |
const androidUpdateBuildNumber = function(buildGradleLocation, newBuildNumber){ | |
var buildGradleStr = fs.readFileSync(buildGradleLocation, "utf8"); | |
if (log_enabled) console.log('buildGradleStr: ', buildGradleStr); | |
var buildString = findMatches(androidBuildFinderRegex, buildGradleStr)[0]; | |
var build = buildString.replace('versionCode', '').trim(); | |
if (log_enabled) console.log('buildString: ', buildString); | |
if (log_enabled) console.log('build: ', build); | |
var oldBuildString = buildString; | |
var newBuildString = buildString.replace(build, newBuildNumber) | |
var newBuildGradleStr = buildGradleStr.replace(oldBuildString, newBuildString); | |
fs.writeFileSync(buildGradleLocation, newBuildGradleStr, "utf8"); | |
console.log('androidUpdateBuildNumber - işlem ok!'); | |
}; | |
const androidUpdateVersion = function(buildGradleLocation, newVersion){ | |
var buildGradleStr = fs.readFileSync(buildGradleLocation, "utf8"); | |
if (log_enabled) console.log('buildGradleStr: ', buildGradleStr); | |
var versionString = findMatches(androidVersionFinderRegex, buildGradleStr)[0]; | |
var version = versionString.replace('versionName', '').trim().replaceAll('"', ''); | |
if (log_enabled) console.log('versionString: ', versionString); | |
if (log_enabled) console.log('version: ', version); | |
var oldVersionString = versionString; | |
var newVersionString = versionString.replace(version, newVersion) | |
var newBuildGradleStr = buildGradleStr.replace(oldVersionString, newVersionString); | |
fs.writeFileSync(buildGradleLocation, newBuildGradleStr, "utf8"); | |
console.log('androidUpdateVersion - işlem ok!'); | |
}; | |
const androidFindBuildNumber = function(buildGradleLocation){ | |
var buildGradleStr = fs.readFileSync(buildGradleLocation, "utf8"); | |
if (log_enabled) console.log('buildGradleStr: ', buildGradleStr); | |
var buildString = findMatches(androidBuildFinderRegex, buildGradleStr)[0]; | |
var build = buildString.replace('versionCode', '').trim(); | |
if (log_enabled) console.log('buildString: ', buildString); | |
if (log_enabled) console.log('build: ', build); | |
return build; | |
}; | |
const androidFindVersion = function(buildGradleLocation){ | |
var buildGradleStr = fs.readFileSync(buildGradleLocation, "utf8"); | |
if (log_enabled) console.log('buildGradleStr: ', buildGradleStr); | |
var versionString = findMatches(androidVersionFinderRegex, buildGradleStr)[0]; | |
var version = versionString.replace('versionName', '').trim().replaceAll('"', ''); | |
if (log_enabled) console.log('versionString: ', versionString); | |
if (log_enabled) console.log('version: ', version); | |
return version; | |
}; | |
module.exports = { | |
// ios | |
iOSUpdateBuildNumber: iOSUpdateBuildNumber, | |
iOSUpdateVersion: iOSUpdateVersion, | |
iOSFindBuildNumber: iOSFindBuildNumber, | |
iOSFindVersion: iOSFindVersion, | |
// android | |
androidUpdateBuildNumber: androidUpdateBuildNumber, | |
androidUpdateVersion: androidUpdateVersion | |
androidFindBuildNumber: androidFindBuildNumber, | |
androidFindVersion: androidFindVersion, | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment