summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--WebContent/release-notes.html6
-rw-r--r--buildhelpers/build.xml9
-rw-r--r--buildhelpers/src/com/vaadin/buildhelpers/FetchReleaseNotesAuthors.java101
-rw-r--r--buildhelpers/src/com/vaadin/buildhelpers/authormap.properties6
-rw-r--r--common.xml19
5 files changed, 138 insertions, 3 deletions
diff --git a/WebContent/release-notes.html b/WebContent/release-notes.html
index f912f9924e..2737ff3014 100644
--- a/WebContent/release-notes.html
+++ b/WebContent/release-notes.html
@@ -63,6 +63,7 @@
@version-minor@</a></li>
<li><a href="#supportedversions">Supported
technologies</a></li>
+ <li><a href="#authors">Authors</a></li>
<li><a href="#vaadinontheweb">Vaadin on the Web</a></li>
</ul>
@@ -553,6 +554,11 @@
<li>PostgreSQL</li>
</ul>
+ <h2 id="authors">Authors</h2>
+ Vaadin @version@ was created by:
+ <ul>
+ @release-notes-authors@
+ </ul>
<h2 id="vaadinontheweb">Vaadin on the Web</h2>
<ul>
diff --git a/buildhelpers/build.xml b/buildhelpers/build.xml
index 28eb55e6e8..159435811f 100644
--- a/buildhelpers/build.xml
+++ b/buildhelpers/build.xml
@@ -44,6 +44,15 @@
</antcall>
</target>
+ <target name="fetch-release-notes-authors">
+ <copy file="src/com/vaadin/buildhelpers/authormap.properties" tofile="result/classes/com/vaadin/buildhelpers/authormap.properties" />
+ <antcall target="common.exec-buildhelper">
+ <param name="main.class" value="com.vaadin.buildhelpers.FetchReleaseNotesAuthors" />
+ <param name="output" value="${output}" />
+ </antcall>
+ <delete file="result/classes/com/vaadin/buildhelpers/authormap.properties" />
+ </target>
+
<target name="test" depends="checkstyle">
<!--<antcall target="common.test.run" /> -->
<echo>WHAT? No JUnit tests for ${module.name}!</echo>
diff --git a/buildhelpers/src/com/vaadin/buildhelpers/FetchReleaseNotesAuthors.java b/buildhelpers/src/com/vaadin/buildhelpers/FetchReleaseNotesAuthors.java
new file mode 100644
index 0000000000..cd85ca6a3f
--- /dev/null
+++ b/buildhelpers/src/com/vaadin/buildhelpers/FetchReleaseNotesAuthors.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.buildhelpers;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
+
+public class FetchReleaseNotesAuthors {
+ private static final String template = "<li class=\"author\">@author@</li>";
+
+ public static void main(String[] args) throws IOException,
+ InterruptedException {
+ Properties authorMap = new Properties();
+
+ String authorsFilename = FetchReleaseNotesAuthors.class.getPackage()
+ .getName().replace(".", "/")
+ + "/authormap.properties";
+ InputStream s = FetchReleaseNotesAuthors.class.getClassLoader()
+ .getResourceAsStream(authorsFilename);
+ if (s == null) {
+ System.err.println("Author mapping file " + authorsFilename
+ + " not found!");
+ }
+ authorMap.load(s);
+
+ String version = System.getProperty("vaadin.version");
+ String previousVersion = getPreviousVersion(version);
+ // System.out.println("Using previous version: " + previousVersion);
+ // List all commits which are in this version but not in
+ // "previousVersion"
+ String cmd = "git log --pretty=%an HEAD ^origin/" + previousVersion;
+ Process p = Runtime.getRuntime().exec(cmd);
+ p.waitFor();
+ if (p.exitValue() != 0) {
+ System.err.println("Exit code: " + p.exitValue());
+ }
+ BufferedReader b = new BufferedReader(new InputStreamReader(
+ p.getInputStream()));
+ String line = "";
+
+ List<String> authors = new ArrayList<String>();
+ while ((line = b.readLine()) != null) {
+ String author = line;
+ if (authorMap.containsKey(author)) {
+ author = authorMap.getProperty(author);
+ }
+ if (author != null && !author.equals("")
+ && !authors.contains(author)) {
+ authors.add(author);
+ }
+ }
+ Collections.sort(authors);
+ for (String author : authors) {
+ System.out.println(template.replace("@author@", author));
+ }
+ }
+
+ private static String getPreviousVersion(String version) {
+ String[] versionNumbers = version.split("\\.");
+ if (versionNumbers.length > 4 || versionNumbers.length < 3) {
+ throw new IllegalArgumentException("Cannot parse version: "
+ + version);
+ }
+ int major = Integer.parseInt(versionNumbers[0]);
+ int minor = Integer.parseInt(versionNumbers[1]);
+ int maintenance = Integer.parseInt(versionNumbers[2]);
+ // String qualifier = versionNumbers[3];
+
+ if (minor == 0) {
+ // Major release, can't know what the previous minor was
+ throw new IllegalArgumentException(
+ "Can't know what previous minor version was");
+ }
+ if (maintenance == 0) {
+ // Minor release, use last minor
+ return major + "." + (minor - 1);
+ } else {
+ // Maintenance, use last maintenance
+ return major + "." + minor + "." + (maintenance - 1);
+ }
+ }
+}
diff --git a/buildhelpers/src/com/vaadin/buildhelpers/authormap.properties b/buildhelpers/src/com/vaadin/buildhelpers/authormap.properties
new file mode 100644
index 0000000000..15b8ad2cba
--- /dev/null
+++ b/buildhelpers/src/com/vaadin/buildhelpers/authormap.properties
@@ -0,0 +1,6 @@
+denisanisimov=Denis Anisimov
+joheriks=Johannes Eriksson
+michaelvogt=Michael Vogt
+tapio=Tapio Aali
+Build\ Agent=
+mtzukanov=Michael Tzukanov \ No newline at end of file
diff --git a/common.xml b/common.xml
index 17537899de..6e28ab6a60 100644
--- a/common.xml
+++ b/common.xml
@@ -32,12 +32,14 @@
<property name="filtered.webcontent.dir" location="${vaadin.basedir}/result/filteredWebContent" />
<property name="release-notes-tickets-file" location="${vaadin.basedir}/result/release-notes-tickets.html" />
+ <property name="release-notes-authors-file" location="${vaadin.basedir}/result/release-notes-authors.html" />
- <target name="filter.webcontent" unless="webcontent.filtered" depends="fetch-release-notes-tickets">
+ <target name="filter.webcontent" unless="webcontent.filtered" depends="fetch-release-notes-tickets,fetch-release-notes-authors">
<property name="webcontent.filtered" value="true" />
<!-- Running without build.release-notes will cause an error, which
is ignored -->
<loadfile property="release-notes-tickets" srcFile="${release-notes-tickets-file}" failonerror="false" />
+ <loadfile property="release-notes-authors" srcFile="${release-notes-authors-file}" failonerror="false" />
<delete dir="${filtered.webcontent.dir}" />
<copy todir="${filtered.webcontent.dir}">
@@ -68,16 +70,27 @@
<replacetokens begintoken="@" endtoken="@">
<token key="release-notes-tickets" value="${release-notes-tickets}" />
</replacetokens>
+ <replacetokens begintoken="@" endtoken="@">
+ <token key="release-notes-authors" value="${release-notes-authors}" />
+ </replacetokens>
</filterchain>
</copy>
</target>
- <target name="fetch-release-notes-tickets" unless="built.release-notes" if="build.release-notes">
+ <target name="fetch-release-notes-tickets" unless="built.release-notes-tickets" if="build.release-notes">
<mkdir dir="${vaadin.basedir}/result" />
<subant buildpath="${vaadin.basedir}/buildhelpers" target="fetch-release-notes-tickets" antfile="build.xml" inheritall="true">
<property name="output" location="${release-notes-tickets-file}" />
</subant>
- <property name="built.release-notes" value="1" />
+ <property name="built.release-notes-tickets" value="1" />
+ </target>
+
+ <target name="fetch-release-notes-authors" unless="built.release-notes-authors" if="build.release-notes">
+ <mkdir dir="${vaadin.basedir}/result" />
+ <subant buildpath="${vaadin.basedir}/buildhelpers" target="fetch-release-notes-authors" antfile="build.xml" inheritall="true">
+ <property name="output" location="${release-notes-authors-file}" />
+ </subant>
+ <property name="built.release-notes-authors" value="1" />
</target>
<fileset dir="${filtered.webcontent.dir}" id="common.files.for.all.jars">