Check for latest version if release not found. Cleanup. Version 1.0.0
diff --git a/.gitignore b/.gitignore
index 1c37ffb..446acd8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
.gradle/
.idea/
**/build/
+**/.DS_Store
diff --git a/starter/build.gradle b/starter/build.gradle
index 4aa8739..0696646 100644
--- a/starter/build.gradle
+++ b/starter/build.gradle
@@ -1,2 +1,8 @@
apply plugin: 'java'
+jar {
+ archiveName = "grails-wrapper.jar"
+ manifest {
+ attributes 'Main-Class': 'grails.init.Start'
+ }
+}
\ No newline at end of file
diff --git a/starter/src/main/java/grails/init/FindReleaseHandler.java b/starter/src/main/java/grails/init/FindReleaseHandler.java
index bfdd339..c05f3ae 100644
--- a/starter/src/main/java/grails/init/FindReleaseHandler.java
+++ b/starter/src/main/java/grails/init/FindReleaseHandler.java
@@ -9,23 +9,41 @@
*/
public class FindReleaseHandler extends DefaultHandler {
- public String version;
+ private String releaseVersion;
+ private String latestVersion;
- private boolean foundVersion;
+ private boolean foundRelease;
+ private boolean foundLatest;
@Override
public void startElement(String uri, String localName,String qName,
Attributes attributes) {
if (qName.equalsIgnoreCase("RELEASE")) {
- foundVersion = true;
+ foundRelease = true;
+ }
+ if (qName.equalsIgnoreCase("LATEST")) {
+ foundLatest = true;
}
}
@Override
public void characters(char ch[], int start, int length) throws SAXException {
- if (foundVersion) {
- version = new String(ch, start, length);
+ if (foundRelease) {
+ releaseVersion = new String(ch, start, length);
}
- foundVersion = false;
+ if (foundLatest) {
+ latestVersion = new String(ch, start, length);
+ }
+ foundLatest = false;
+ foundRelease = false;
+ }
+
+ public String getVersion() {
+ if (releaseVersion != null) {
+ return releaseVersion;
+ } else if (latestVersion != null) {
+ return latestVersion;
+ }
+ return null;
}
}
diff --git a/starter/src/main/java/grails/init/Start.java b/starter/src/main/java/grails/init/Start.java
index fec9d54..586c73d 100644
--- a/starter/src/main/java/grails/init/Start.java
+++ b/starter/src/main/java/grails/init/Start.java
@@ -15,24 +15,25 @@
public class Start {
- private static String baseUrl = "http://repo.grails.org/grails/core/org/grails/grails-datastore-web";
+ private static final String PROJECT_NAME = "grails-wrapper";
+ private static final String BASE_URL = "http://repo.grails.org/grails/core/org/grails/" + PROJECT_NAME;
public static void main(String[] args) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
FindReleaseHandler findReleaseHandler = new FindReleaseHandler();
- saxParser.parse(new URL(baseUrl + "/maven-metadata.xml").openStream(), findReleaseHandler);
+ saxParser.parse(new URL(BASE_URL + "/maven-metadata.xml").openStream(), findReleaseHandler);
- final String jarFileName = "grails-datastore-web-" + findReleaseHandler.version + ".jar";
+ final String jarFileName = PROJECT_NAME + "-" + findReleaseHandler.getVersion() + ".jar";
File wrapperDir = new File(System.getProperty("user.home") + "/.grails/wrapper");
wrapperDir.mkdirs();
File existingWrapper = new File(wrapperDir, jarFileName);
- File noVersionJar = new File(wrapperDir, "grails-datastore-web.jar");
+ File noVersionJar = new File(wrapperDir, PROJECT_NAME + ".jar");
if (!existingWrapper.exists()) {
- URL website = new URL(baseUrl + "/" + findReleaseHandler.version + "/" + jarFileName);
+ URL website = new URL(BASE_URL + "/" + findReleaseHandler.getVersion() + "/" + jarFileName);
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(existingWrapper);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
diff --git a/wrapper/build.gradle b/wrapper/build.gradle
index 5db7812..32c5a05 100644
--- a/wrapper/build.gradle
+++ b/wrapper/build.gradle
@@ -17,7 +17,7 @@
}
group 'org.grails'
-version '1.0.0.BUILD-SNAPSHOT'
+version '1.0.0'
apply plugin:'groovy'
apply plugin: 'maven-publish'