A complete 3D game development suite written purely in Java.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
jmonkeyengine/version.gradle

182 lines
4.7 KiB

/*
Version Info Examples
=====================
Nightly Build Snapshot (no git tag)
* Full Version: 3.1.0-5124
* POM Version: 3.1.0-SNAPSHOT
Nightly Build Snapshot (PBRIsComing branch) (no git tag)
* Full Version: 3.1.0-PBRIsComing-5124
* POM Version: 3.1.0-PBRIsComing-SNAPSHOT
Alpha1 Release (git tag: v3.1-alpha1)
* Full Version: 3.1.0-alpha1
* POM Version: 3.1.0-alpha1
Final Release (git tag: v3.1)
* Full Version: 3.1.0
* POM Version: 3.1.0
*/
import java.text.SimpleDateFormat
import org.ajoberstar.grgit.*
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.ajoberstar:gradle-git:1.4.1'
}
}
ext {
releaseInfo = null;
}
enum ReleaseType {
Unknown,
Snapshot,
PreRelease,
Release;
}
class ReleaseInfo {
String tag;
String version;
String releaseName;
ReleaseType releaseType;
String buildDate;
String branch;
String hash;
String shortHash;
int revision;
String fullVersion;
String pomVersion;
ReleaseInfo(String version, Grgit repo) {
loadBuildDate();
loadRepoInfo(version, repo);
}
ReleaseInfo(String version) {
loadBuildDate();
loadUnknownInfo(version);
}
final void loadBuildDate() {
this.buildDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
}
final void loadUnknownInfo(String version) {
this.releaseType = ReleaseType.Unknown;
this.version = version;
this.releaseName = "unknown";
this.tag = "";
this.revision = 0;
this.branch = "unknown";
this.hash = "";
this.shortHash = "";
this.fullVersion = "${version}-UNKNOWN";
this.pomVersion = "${version}-UNKNOWN";
}
final void loadRepoInfo(String version, Grgit repo) {
this.releaseType = ReleaseType.Snapshot;
this.version = version;
Commit head = repo.head();
this.revision = repo.log(includes:[head]).size();
this.hash = head.id;
this.shortHash = head.abbreviatedId;
this.branch = repo.branch.current.name;
Tag gitTag = repo.tag.list().find { it.commit == head }
if (gitTag != null){
this.tag = gitTag.name;
} else {
this.tag = "";
}
if (System.env.TRAVIS_BRANCH != null) {
this.branch = System.env.TRAVIS_BRANCH
}
if (System.env.TRAVIS_TAG != null) {
this.tag = System.env.TRAVIS_TAG
}
if (System.env.TRAVIS_PULL_REQUEST != null && System.env.TRAVIS_PULL_REQUEST != "false") {
this.branch += "-pr-" + System.env.TRAVIS_PULL_REQUEST
}
loadTagInfo(this.tag);
this.fullVersion = version;
if (this.branch != "master") {
this.fullVersion += "-${branch}";
}
switch (this.releaseType) {
case ReleaseType.Snapshot:
this.pomVersion = "${fullVersion}-SNAPSHOT";
this.fullVersion += "-${revision}";
break;
case ReleaseType.PreRelease:
this.pomVersion = "${fullVersion}-${releaseName}";
this.fullVersion += "-${releaseName}";
break;
case ReleaseType.Release:
this.pomVersion = "${fullVersion}";
break;
}
}
final void loadTagInfo(String tag) {
this.tag = tag;
if (tag == null || !tag.startsWith("v")) {
return;
}
String[] parts = tag.split("-");
if (parts.length == 2) {
if (parts[0].size() < 1 || parts[1].size() < 1) {
return;
}
releaseType = ReleaseType.PreRelease;
version = parts[0].substring(1);
releaseName = parts[1];
} else if (parts.length == 1) {
if (parts[0].size() < 1) {
return;
}
releaseType = ReleaseType.Release;
version = parts[0];
}
}
public String toString() {
return "tag = ${tag}, base_ver = ${baseVersion}, main_ver = ${mainVersion}, " +
"prerelease = ${prerelease}, release_name = ${releaseName}"
}
}
task configureVersionInfo {
try {
def repo = Grgit.open(project.file('.'))
releaseInfo = new ReleaseInfo(jmeVersion, repo);
logger.warn("Full Version: ${releaseInfo.fullVersion}")
logger.warn("POM Version: ${releaseInfo.pomVersion}")
} catch (ex) {
// Failed to get repo info
logger.warn("Failed to get repository info: " + ex.message + ". " + \
"Only partial build info will be generated.")
releaseInfo = new ReleaseInfo(jmeVersion);
}
}