Skip to content

Commit f9d2d1b

Browse files
committed
use versioning system by analyzing the version string
1 parent 99475c2 commit f9d2d1b

File tree

2 files changed

+78
-25
lines changed

2 files changed

+78
-25
lines changed

buildSrc/src/main/groovy/org/jfrog/build/Version.groovy

+74-17
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,50 @@
1+
/*
2+
*
3+
* Copyright (C) 2010 JFrog Ltd.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
* /
17+
*/
18+
119
package org.jfrog.build
220

321
import org.gradle.api.GradleException
422
import org.gradle.api.Project
23+
import org.gradle.api.DefaultTask
24+
import org.gradle.api.tasks.Input
25+
import org.gradle.api.tasks.OutputFile
26+
import org.gradle.api.tasks.TaskAction
27+
28+
import java.text.DateFormat
529
import java.text.SimpleDateFormat
630

731
class Version {
832
String versionNumber
933
Date buildTime
1034
Boolean release = null
35+
int indexOfSnapshot
1136

1237
def Version(Project project) {
1338
this(project, null)
1439
}
1540

1641
def Version(Project project, List<String> subProjects) {
1742
this.versionNumber = project.getProperty("${project.name}-version")
18-
this.release = Boolean.valueOf(project.getProperty("${project.name}-release"))
43+
this.release = true
44+
if (versionNumber.contains('SNAPSHOT')) {
45+
this.release = false
46+
this.indexOfSnapshot = this.versionNumber.indexOf('SNAPSHOT')
47+
}
1948
File timestampFile = new File(project.buildDir, 'timestamp.txt')
2049
if (timestampFile.isFile()) {
2150
boolean uptodate = true
@@ -47,27 +76,55 @@ class Version {
4776
}
4877
buildTime = new Date(timestampFile.lastModified())
4978
if (!release) {
50-
//def ts = new SimpleDateFormat('yyyyMMddHHmmss').format(buildTime)
51-
this.versionNumber += "-SNAPSHOT" // + ts
52-
/*
53-
project.gradle.taskGraph.whenReady {graph ->
54-
if (graph.hasTask(':releaseVersion')) {
55-
release = true
56-
} else {
57-
this.versionNumber += "-" + getTimestamp()
58-
release = false
59-
}
60-
}
61-
*/
79+
this.versionNumber = this.versionNumber.substring(0, indexOfSnapshot - 1)
80+
this.versionNumber += "-" + getTimestamp()
6281
}
6382
}
6483

84+
String toString() {
85+
versionNumber
86+
}
87+
88+
String getTimestamp() {
89+
// Convert local file timestamp to UTC
90+
def format = new SimpleDateFormat('yyyyMMddHHmmss')
91+
format.setCalendar(Calendar.getInstance(TimeZone.getTimeZone('UTC')));
92+
return format.format(buildTime)
93+
}
94+
6595
String getStatus() {
66-
if (release) return 'release'
67-
return 'integration'
96+
return release ? "release" : "integration"
6897
}
6998

70-
String toString() {
71-
versionNumber
99+
boolean isRelease() {
100+
if (release == null) {
101+
throw new GradleException("Can't determine whether this is a release build before the task graph is populated")
102+
}
103+
return release
104+
}
105+
}
106+
107+
class WriteVersionProperties extends DefaultTask {
108+
@Input
109+
String getVersion() { return project.version.toString() }
110+
111+
@Input
112+
Date getBuildTime() { return project.version.buildTime }
113+
114+
@OutputFile
115+
File propertiesFile
116+
117+
@TaskAction
118+
def void generate() {
119+
logger.info('Write version properties to: {}', propertiesFile)
120+
Properties versionProperties = new Properties()
121+
versionProperties.putAll([
122+
'version': version,
123+
'buildTime': DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL).format(buildTime)
124+
])
125+
propertiesFile.withOutputStream {
126+
versionProperties.store(it, '')
127+
}
128+
72129
}
73130
}

gradle.properties

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
build-info-latest-release-version=1.4.10
2-
build-info-version=2.0.x
3-
build-info-release=false
4-
build-info-extractor-ivy-version=2.0.x
5-
build-info-extractor-ivy-release=false
6-
build-info-extractor-gradle-version=2.0.x
7-
build-info-extractor-gradle-release=false
8-
build-info-extractor-maven3-version=2.0.x
9-
build-info-extractor-maven3-release=false
2+
build-info-version=2.0.x-SNAPSHOT
3+
build-info-extractor-ivy-version=2.0.x-SNAPSHOT
4+
build-info-extractor-gradle-version=2.0.x-SNAPSHOT
5+
build-info-extractor-maven3-version=2.0.x-SNAPSHOT

0 commit comments

Comments
 (0)