Change-Id: I51960e9345ff233e29289b33d3224e03d866d463tags/7.2.0
@@ -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> |
@@ -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> |
@@ -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); | |||
} | |||
} | |||
} |
@@ -0,0 +1,6 @@ | |||
denisanisimov=Denis Anisimov | |||
joheriks=Johannes Eriksson | |||
michaelvogt=Michael Vogt | |||
tapio=Tapio Aali | |||
Build\ Agent= | |||
mtzukanov=Michael Tzukanov |
@@ -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"> |