Skip to content

Instantly share code, notes, and snippets.

@osvalr
Forked from IliaEremin/app_version.gradle
Created October 25, 2019 11:17
Show Gist options
  • Save osvalr/b114732eeaee1dedea6292aed34587b8 to your computer and use it in GitHub Desktop.
Save osvalr/b114732eeaee1dedea6292aed34587b8 to your computer and use it in GitHub Desktop.
Npm version for gradle
def getVersionFile() {
return file('gradle.properties')
}
task bumperInit() {
doLast {
def versionName = project.hasProperty('bumperVersionName') ? bumperVersionName : '1.0.0'
def versionCode = project.hasProperty('bumperVersionCode') ? bumperVersionCode : '1'
def propertyFile = getVersionFile()
if (!propertyFile.exists()) {
propertyFile.createNewFile()
}
def props = new Properties()
propertyFile.withReader { props.load(it) }
props.setProperty('versionName', versionName)
props.setProperty('versionCode', versionCode)
props.store(propertyFile.newWriter(), null)
}
}
def getVersionProps() {
def versionPropsFile = getVersionFile()
def versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))
return versionProps
}
private Integer getVersionNamePatch() {
return (getVersionProps()['versionName'] =~ /\d+/)[2].toInteger()
}
private Integer getVersionNameMinor() {
return (getVersionProps()['versionName'] =~ /\d+/)[1].toInteger()
}
private Integer getVersionNameMajor() {
return (getVersionProps()['versionName'] =~ /\d+/)[0].toInteger()
}
private void commitAndSetTag(String versionName) {
Process addChanges = ['git', 'add', 'app/versioning/app_version.properties'].execute(null, project.rootDir)
addChanges.waitForProcessOutput(System.out, System.err)
Process createCommit = ['git', 'commit', "-m Release ${versionName}"].execute(null, project.rootDir)
createCommit.waitForProcessOutput(System.out, System.err)
Process createTag = ['git', 'tag', "v${versionName}".toString()].execute(null, project.rootDir)
createTag.waitForProcessOutput(System.out, System.err)
}
//ext.getAppVersionCode = {
// getVersionProps()['versionCode'].toInteger()
//}
//
//ext.getAppVersionName = {
// getVersionProps()['versionName'].toString()
//}
private void saveChanges(String versionName, Integer versionCode) {
def versionProps = getVersionProps()
versionProps['versionName'] = versionName
versionProps['versionCode'] = versionCode.toString()
versionProps.store(getVersionFile().newWriter(), null)
}
task bumpVersionPatch {
doLast {
def versionCode = getAppVersionCode() + 1
def versionNameMajor = getVersionNameMajor()
def versionNameMinor = getVersionNameMinor()
def versionNamePatch = getVersionNamePatch() + 1
def versionName = "${versionNameMajor}.${versionNameMinor}.${versionNamePatch}".toString()
saveChanges(versionName, versionCode)
commitAndSetTag(versionName)
}
}
task bumperVersionMinor {
doLast {
def versionCode = getAppVersionCode() + 1
def versionNameMajor = getVersionNameMajor()
def versionNameMinor = getVersionNameMinor() + 1
def versionNamePatch = getVersionNamePatch()
def versionName = "${versionNameMajor}.${versionNameMinor}.${versionNamePatch}".toString()
saveChanges(versionName, versionCode)
commitAndSetTag(versionName)
}
}
task bumperVersionMajor {
doLast {
def versionCode = getAppVersionCode() + 1
def versionNameMajor = getVersionNameMajor() + 1
def versionNameMinor = getVersionNameMinor()
def versionNamePatch = getVersionNamePatch()
def versionName = "${versionNameMajor}.${versionNameMinor}.${versionNamePatch}".toString()
saveChanges(versionName, versionCode)
commitAndSetTag(versionName)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment