diff --git a/build.gradle b/build.gradle index 8f2cb51b24..a6b913594e 100644 --- a/build.gradle +++ b/build.gradle @@ -117,6 +117,8 @@ dependencies { } } +import org.gradle.util.VersionNumber + // set build props project.ext { timestamp = new Date().format('yyyyMMddHHmmSS') @@ -131,14 +133,17 @@ project.ext { if (buildNumber != null) { snapshotVersion += "-${buildNumber}" } - dockerTag = version.replace('SNAPSHOT', snapshotVersion) + dockerTag = project.version.replace('SNAPSHOT', snapshotVersion) } else { isSnapshot = false expandedVersion = project.version expandedVersionWithDot = project.version dockerRepository = 'docker.io/scmmanager/scm-manager' - dockerTag = version.replace('SNAPSHOT', snapshotVersion) + dockerTag = project.version } + + VersionNumber v = VersionNumber.parse(project.version) + nextSnapshotVersion = "${v.major}.${v.minor}.${v.micro + 1}-SNAPSHOT" } publishing { @@ -162,3 +167,52 @@ publishing { } } } + +// release related tasks + +task setVersion { + doLast { + if (!project.hasProperty('newVersion')) { + throw new GradleException('usage setVersion -PnewVersion=x.y.z') + } + + String version = project.property('newVersion') + setNewVersion(version) + } +} + +task setVersionToNextSnapshot { + doLast { + setNewVersion(nextSnapshotVersion) + } +} + +task printVersion { + doLast { + println project.version + } +} + +def setNewVersion(String newVersion) { + File propertiesFile = new File(project.rootDir, 'gradle.properties') + + if (project.version == newVersion) { + println "project uses already version ${newVersion}" + return + } + + def lines = propertiesFile.readLines('UTF-8') + def newLines = lines.collect{ line -> + if (line.trim().startsWith('version')) { + return "version = ${newVersion}" + } + return line + } + + println "set version from ${project.version} to ${newVersion}" + propertiesFile.withWriter('UTF-8') {writer -> + newLines.forEach { line -> + writer.writeLine(line) + } + } +} diff --git a/gradle.properties b/gradle.properties index 212d009095..04e8c2791b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,5 +21,5 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # -group=sonia.scm -version=2.13.0-SNAPSHOT +group = sonia.scm +version = 2.13.0-SNAPSHOT diff --git a/scm-ui/build.gradle b/scm-ui/build.gradle index 387370d70e..36c043dee7 100644 --- a/scm-ui/build.gradle +++ b/scm-ui/build.gradle @@ -170,7 +170,20 @@ task cleanUpAfterPublishing { } task setVersion(type: YarnTask) { - args = ['run', 'set-version', project.version] + doFirst { + if (!project.hasProperty('newVersion')) { + throw new GradleException('newVersion properties is required, specify with -PnewVersion=x.y.z') + } + println "set ui package modules to new version ${project.property('newVersion')}" + } + if (project.hasProperty('newVersion')) { + args = ['run', 'set-version', project.property('newVersion')] + } + dependsOn('yarn_install') +} + +task setVersionToNextSnapshot(type: YarnTask) { + args = ['run', 'set-version', nextSnapshotVersion] dependsOn('yarn_install') }