Skip to content

Instantly share code, notes, and snippets.

@kocyigityunus
Last active March 28, 2018 16:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kocyigityunus/bcee0ee85ecc406d3381d1aeddda49be to your computer and use it in GitHub Desktop.
Save kocyigityunus/bcee0ee85ecc406d3381d1aeddda49be to your computer and use it in GitHub Desktop.
ios & android version & build number helper methods
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