diff options
Diffstat (limited to 'buildScripts')
-rw-r--r-- | buildScripts/ivy.xml | 1 | ||||
-rw-r--r-- | buildScripts/src/lombok/website/CompileChangelog.java | 77 | ||||
-rw-r--r-- | buildScripts/src/lombok/website/WebUpToDate.java | 190 | ||||
-rw-r--r-- | buildScripts/website.ant.xml | 273 |
4 files changed, 49 insertions, 492 deletions
diff --git a/buildScripts/ivy.xml b/buildScripts/ivy.xml index 3a851fcd..caa56012 100644 --- a/buildScripts/ivy.xml +++ b/buildScripts/ivy.xml @@ -35,6 +35,7 @@ <dependency org="projectlombok.org" name="jsch-ant-fixed" rev="0.1.42" conf="buildBase->build" /> <dependency org="projectlombok.org" name="markdownj" rev="1.02b4" conf="buildBase->build" /> <dependency org="de.java2html" name="java2html" rev="5.0" conf="buildBase->default" /> + <dependency org="org.freemarker" name="freemarker" rev="2.3.25-incubating" conf="buildBase->default" /> <dependency org="net.java.openjdk.custom" name="javac6" rev="1.6.0.18" conf="javac6->runtime; contrib->sources" /> <dependency org="net.java.openjdk.custom" name="javac7" rev="1.7.0" conf="javac7->runtime; contrib->sources" /> diff --git a/buildScripts/src/lombok/website/CompileChangelog.java b/buildScripts/src/lombok/website/CompileChangelog.java deleted file mode 100644 index 276842be..00000000 --- a/buildScripts/src/lombok/website/CompileChangelog.java +++ /dev/null @@ -1,77 +0,0 @@ -package lombok.website; - -import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import com.petebevin.markdown.MarkdownProcessor; - -public class CompileChangelog { - public static void main(String[] args) { - String fileIn = args[0]; - String fileOut = args[1]; - boolean edge = args.length > 3 && "-edge".equals(args[2]); - boolean latest = args.length > 3 && "-latest".equals(args[2]); - String version = args.length > 3 ? args[3] : null; - - try { - FileInputStream in = new FileInputStream(fileIn); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - - byte[] b = new byte[65536]; - while (true) { - int r = in.read(b); - if ( r == -1 ) break; - out.write(b, 0, r); - } - in.close(); - String markdown = new String(out.toByteArray(), "UTF-8"); - - String result; - if (edge) { - result = buildEdge(sectionByVersion(markdown, version)); - } else if (latest) { - result = buildLatest(sectionByVersion(markdown, version)); - } else { - result = build(markdown); - } - - FileOutputStream file = new FileOutputStream(fileOut); - file.write(result.getBytes("UTF-8")); - file.close(); - System.exit(0); - } catch (Throwable e) { - e.printStackTrace(); - System.exit(1); - } - } - - private static String build(String markdown) { - return new MarkdownProcessor().markdown(markdown); - } - - private static String buildEdge(String section) { - String latest = section != null ? section : "* No changelog records for this edge release."; - return new MarkdownProcessor().markdown(latest); - } - - private static String buildLatest(String section) { - String latest = section != null ? section : "* No changelog records for this release."; - String noIssueLinks = latest.replaceAll("\\[[^]]*[Ii]ssue[^]]*\\]\\([^)]*\\)", ""); - String noLinks = noIssueLinks.replaceAll("\\[([^]]*)\\]\\([^)]*\\)", "$1"); - return new MarkdownProcessor().markdown(noLinks); - } - - private static String sectionByVersion(String markdown, String version) { - if (version.toUpperCase().endsWith("-HEAD") || version.toUpperCase().endsWith("-EDGE")) { - version = version.substring(0, version.length() - 5); - } - - Pattern p = Pattern.compile( - "(?is-m)^.*###\\s*v" + version + ".*?\n(.*?)(?:###\\s*v.*)?$"); - Matcher m = p.matcher(markdown); - return m.matches() ? m.group(1) : null; - } -}
\ No newline at end of file diff --git a/buildScripts/src/lombok/website/WebUpToDate.java b/buildScripts/src/lombok/website/WebUpToDate.java deleted file mode 100644 index 0fe4c1e9..00000000 --- a/buildScripts/src/lombok/website/WebUpToDate.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Modified from http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/UpToDate.java?view=markup - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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 lombok.website; - -import java.io.File; -import java.util.Vector; -import java.util.Enumeration; -import java.util.Iterator; -import java.net.MalformedURLException; -import java.net.URL; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.taskdefs.condition.Condition; -import org.apache.tools.ant.types.Resource; -import org.apache.tools.ant.types.FileSet; -import org.apache.tools.ant.types.resources.Union; -import org.apache.tools.ant.types.resources.FileResource; -import org.apache.tools.ant.types.resources.URLResource; -import org.apache.tools.ant.types.selectors.SelectorUtils; - -public class WebUpToDate extends Task implements Condition { - private String property; - private String value; - private String urlbase; - private File sourceFile; - private Vector sourceFileSets = new Vector(); - private Union sourceResources = new Union(); - - /** - * The property to set if the target file is more up-to-date than - * (each of) the source file(s). - * - * @param property the name of the property to set if Target is up-to-date. - */ - public void setProperty(String property) { - this.property = property; - } - - /** - * The value to set the named property to if the target file is more - * up-to-date than (each of) the source file(s). Defaults to 'true'. - * - * @param value the value to set the property to if Target is up-to-date - */ - public void setValue(String value) { - this.value = value; - } - - /** - * Returns the value, or "true" if a specific value wasn't provided. - */ - private String getValue() { - return (value != null) ? value : "true"; - } - - /** - * The file that must be older than the target file - * if the property is to be set. - * - * @param file the file we are checking against the target file. - */ - public void setSrcfile(File file) { - this.sourceFile = file; - } - - /** - * Nested <srcfiles> element. - * @param fs the source files - */ - public void addSrcfiles(FileSet fs) { - sourceFileSets.addElement(fs); - } - - /** - * Nested resource collections as sources. - * @return the source resources to configure. - * @since Ant 1.7 - */ - public Union createSrcResources() { - return sourceResources; - } - - public void setUrlbase(String base) { - if (base.charAt(base.length()-1) != '/') this.urlbase = base + "/"; - else this.urlbase = base; - } - - /** - * Evaluate (all) target and source file(s) to - * see if the target(s) is/are up-to-date. - * @return true if the target(s) is/are up-to-date - */ - public boolean eval() { - if (sourceFileSets.size() == 0 && sourceResources.size() == 0 && sourceFile == null) { - throw new BuildException("At least one srcfile or a nested <srcfiles> or <srcresources> element must be set."); - } - - if ((sourceFileSets.size() > 0 || sourceResources.size() > 0) && sourceFile != null) { - throw new BuildException("Cannot specify both the srcfile attribute and a nested <srcfiles> or <srcresources> element."); - } - - if (urlbase == null) { - throw new BuildException("The urlbase attribute must be set."); - } - - // if the source file isn't there, throw an exception - if (sourceFile != null && !sourceFile.exists()) { - throw new BuildException(sourceFile.getAbsolutePath() + " not found."); - } - - boolean upToDate = true; - if (sourceFile != null) { - Resource fileResource = new FileResource(sourceFile); - upToDate = isUpToDate(fileResource); - } - - if (upToDate) { - Enumeration e = sourceFileSets.elements(); - while (upToDate && e.hasMoreElements()) { - FileSet fs = (FileSet)e.nextElement(); - Iterator it = fs.iterator(); - while (upToDate && it.hasNext()) { - Resource r = (Resource)it.next(); - upToDate = isUpToDate(r); - } - } - } - - if (upToDate) { - Resource[] r = sourceResources.listResources(); - for (int i = 0; upToDate && i < r.length; i++) { - upToDate = isUpToDate(r[i]); - } - } - - return upToDate; - } - - private boolean isUpToDate(Resource r) throws BuildException { - String url = urlbase + r.getName(); - Resource urlResource; - try { - urlResource = new URLResource(new URL(url)); - } catch (MalformedURLException e) { - throw new BuildException("url is malformed: " + url, e); - } - - if (SelectorUtils.isOutOfDate(r, urlResource, 20)) { - log(r.getName() + " is newer than " + url, Project.MSG_VERBOSE); - return false; - } else { - return true; - } - } - - /** - * Sets property to true if target file(s) have a more recent timestamp - * than (each of) the corresponding source file(s). - * @throws BuildException on error - */ - public void execute() throws BuildException { - if (property == null) { - throw new BuildException("property attribute is required.", getLocation()); - } - boolean upToDate = eval(); - - if (upToDate) { - getProject().setNewProperty(property, getValue()); - log("Website is up to date."); - } - } -} diff --git a/buildScripts/website.ant.xml b/buildScripts/website.ant.xml index c1c780ae..c27d81fa 100644 --- a/buildScripts/website.ant.xml +++ b/buildScripts/website.ant.xml @@ -22,7 +22,7 @@ <project name="lombok-website" basedir=".." default="website"> <description> This buildfile is part of projectlombok.org. It is responsible for building the website and all website-related aspects, -such as converting the changelog into HTML, and creating javadoc. +such as applying the templates to produce the website, converting the changelog into HTML, and creating javadoc. </description> <path id="build.path"> @@ -37,150 +37,54 @@ such as converting the changelog into HTML, and creating javadoc. <delete dir="build/website" quiet="true" /> </target> - <target name="website" description="Prepares the website for distribution" depends="-website-main, -website-videos, -website-dist" /> + <target name="website" description="Prepares the website for distribution" depends="-website-main, -website-dist" /> - <target name="version" unless="lombok.version"> + <target name="-ensure-version" unless="lombok.version"> <fail>Supply lombok.version</fail> </target> + <target name="-ensure-fullversion" unless="lombok.fullversion"> + <fail>Supply lombok.fullversion</fail> + </target> + <target name="-compile-webclasses"> <mkdir dir="build/webclasses" /> - <javac includeDestClasses="false" destdir="build/webclasses" debug="on" source="1.4" target="1.4"> - <classpath refid="build.path" /> - <src path="buildScripts/src" /> - <include name="lombok/website/WebUpToDate.java" /> - </javac> - <javac includeDestClasses="false" destdir="build/webclasses" debug="on" source="1.5" target="1.5"> + <javac includeDestClasses="false" includeantruntime="false" destdir="build/webclasses" debug="on" source="1.8" target="1.8"> <classpath refid="build.path" /> - <src path="buildScripts/src" /> - <include name="lombok/website/CompileChangelog.java" /> + <src path="src/website" /> </javac> </target> - <target name="build-webuptodate" depends="-compile-webclasses"> - <taskdef name="webuptodate" classname="lombok.website.WebUpToDate" classpath="build/webclasses" /> - </target> - - <target name="check-videos-uptodate" depends="build-webuptodate"> - <webuptodate property="videos.uptodate" urlbase="https://projectlombok.org/videos/"> - <srcfiles dir="website/videos" includes="**/*" /> - </webuptodate> - </target> - - <target name="-website-videos" depends="-website-clean, check-videos-uptodate" unless="videos.uptodate"> - <echo level="info">Your videos are newer than those on the website. They will be included too.</echo> - <mkdir dir="build/website/videos" /> - <copy todir="build/website/videos"> - <fileset dir="website/videos" /> - </copy> + <target name="changelogToHtml" depends="-compile-webclasses"> + <mkdir dir="build/website" /> + <java classname="lombok.website.WebsiteMaker" failonerror="true"> + <classpath> + <path refid="build.path" /> + <pathelement location="build/webclasses" /> + </classpath> + <arg value="${lombok.version}" /> + <arg value="${lombok.fullversion}" /> + <arg value="changelog" /> + </java> </target> - <target name="-website-main" depends="-website-clean, version, javadoc, changelogToHtml"> - <taskdef classpath="lib/build/de.java2html-java2html.jar" name="java2html" classname="de.java2html.anttasks.Java2HtmlTask" /> + <target name="-website-main" depends="-ensure-version, -ensure-fullversion, -website-clean, -compile-webclasses, javadoc, changelogToHtml"> <mkdir dir="build/website" /> <copy todir="build/website"> - <fileset dir="website"> - <exclude name="**/*.jpage" /> - <exclude name="**/*.svg" /> - <exclude name="**/*.psd" /> - <exclude name="**/*.ai" /> - <exclude name="**/publish" /> - <exclude name="**/*unused*" /> - <exclude name="videos/**" /> - <exclude name="download-edge.html" /> - <exclude name="download-edge-none.html" /> - </fileset> + <fileset dir="website/resources" /> <fileset dir="."> - <include name="LICENCE" /> - </fileset> - </copy> - <copy file="website/download-edge-none.html" tofile="build/website/download-edge.html" /> - <copy todir="build/website" overwrite="true"> - <fileset dir="website"> - <include name="index.html" /> - <include name="download.html" /> - <include name="slideshow.html" /> - <include name="setup/*.html" /> - <include name="mavenrepo/index.html" /> + <include name="LICENSE" /> </fileset> - <filterchain> - <replacetokens> - <token key="VERSION" value="${lombok.version}" /> - </replacetokens> - </filterchain> </copy> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="GetterSetter" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="GetterLazy" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="ToString" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="EqualsAndHashCode" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="Data" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="Cleanup" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="Synchronized" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="SneakyThrows" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="Constructor" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="Log" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="val" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="Value" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="NonNull" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="Builder" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="Singular-snippet" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="experimental/var" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="experimental/Delegate" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="experimental/Accessors" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="experimental/ExtensionMethod" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="experimental/FieldDefaults" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="experimental/Wither" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="experimental/onX" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="experimental/UtilityClass" /> - </antcall> - <antcall target="-integrateSnippet"> - <param name="transformationName" value="experimental/Helper" /> - </antcall> + <java classname="lombok.website.WebsiteMaker" failonerror="true"> + <classpath> + <path refid="build.path" /> + <pathelement location="build/webclasses" /> + </classpath> + <arg value="${lombok.version}" /> + <arg value="${lombok.fullversion}" /> + <arg value="all" /> + </java> </target> <target name="-website-dist"> @@ -206,88 +110,34 @@ such as converting the changelog into HTML, and creating javadoc. trust="true" command="/data/lombok/stagingCmd/deployWebsite" /> </target> - <target name="-integrateSnippet"> + <target name="latestChanges" depends="-compile-webclasses, -ensure-version, -ensure-fullversion"> <mkdir dir="build/website" /> - <property name="prefile" location="usage_examples/${transformationName}Example_pre.jpage" /> - <property name="postfile" location="usage_examples/${transformationName}Example_post.jpage" /> - <property name="htmlfile" location="website/features/${transformationName}.html" /> - <mkdir dir="build/temp" /> - <property name="preout" location="build/temp/${transformationName}Example_pre.jpage.html" /> - <property name="postout" location="build/temp/${transformationName}Example_post.jpage.html" /> - <java2html srcdir="usage_examples" includes="${transformationName}Example_*.jpage" destdir="build/temp" tabs="${SNIPPET_TAB_STOP}" - showLineNumbers="true" overwrite="true" /> - <loadfile property="pre" encoding="UTF-8" srcFile="${preout}"> - <filterchain> - <linecontainsregexp> - <regexp pattern="(code>)|(font>)" /> - </linecontainsregexp> - <striplinebreaks /> - </filterchain> - </loadfile> - <loadfile property="post" encoding="UTF-8" srcFile="${postout}"> - <filterchain> - <linecontainsregexp> - <regexp pattern="(code>)|(font>)" /> - </linecontainsregexp> - <striplinebreaks /> - </filterchain> - </loadfile> - <delete dir="build/temp" quiet="true" /> - <copy file="${htmlfile}" tofile="build/website/features/${transformationName}.html" overwrite="true"> - <filterchain> - <replacetokens> - <token key="HTML_PRE" value="${pre}" /> - <token key="HTML_POST" value="${post}" /> - </replacetokens> - </filterchain> - </copy> - </target> - - <target name="latestChanges" depends="-compile-webclasses, version"> - <java fork="true" classname="lombok.website.CompileChangelog" failonerror="true"> + <java classname="lombok.website.WebsiteMaker" failonerror="true"> <classpath> <path refid="build.path" /> <pathelement location="build/webclasses" /> </classpath> - <arg value="doc/changelog.markdown" /> - <arg value="build/latestchanges.html" /> - <arg value="-latest" /> <arg value="${lombok.version}" /> + <arg value="${lombok.fullversion}" /> + <arg value="changelog-latest" /> + <arg value="website" /> + <arg value="build/latestchanges.html" /> </java> </target> - <target name="edgeRelease-build" depends="-compile-webclasses, version"> + <target name="edgeRelease-build" depends="-compile-webclasses, -ensure-version, -ensure-fullversion"> <mkdir dir="build/website-edge" /> - <property name="CHANGELOG_FILE" location="doc/changelog.markdown" /> - <property name="CHANGELOG_HTML" location="build/website-edge/changelog-edge.html" /> - <java fork="true" classname="lombok.website.CompileChangelog" failonerror="true"> + <java classname="lombok.website.WebsiteMaker" failonerror="true"> <classpath> <path refid="build.path" /> <pathelement location="build/webclasses" /> </classpath> - <arg value="${CHANGELOG_FILE}" /> - <arg value="${CHANGELOG_HTML}" /> - <arg value="-edge" /> <arg value="${lombok.version}" /> + <arg value="${lombok.fullversion}" /> + <arg value="download-edge" /> + <arg value="website" /> + <arg value="build/website-edge/download-edge.html" /> </java> - <loadfile property="changelog.edge" srcFile="build/website-edge/changelog-edge.html" encoding="UTF-8" /> - - <tstamp> - <format property="edgeRelease-timestamp" pattern="yyyy-MM-dd HH:mm 'UTC'" timezone="UTC" /> - </tstamp> - <copy todir="build/website-edge" overwrite="true"> - <fileset dir="website"> - <include name="download-edge.html" /> - </fileset> - <filterchain> - <replacetokens> - <token key="VERSION-EDGE" value="${lombok.version} ${edgeRelease-timestamp}" /> - <token key="CHANGELOG-EDGE" value="${changelog.edge}" /> - </replacetokens> - </filterchain> - </copy> - - <delete file="build/website-edge/changelog-edge.html" /> <copy file="dist/lombok.jar" tofile="build/website-edge/lombok-edge.jar" /> <tar destfile="dist/website-edge.tar.bz2" compression="bzip2"> @@ -310,33 +160,7 @@ such as converting the changelog into HTML, and creating javadoc. trust="true" command="/data/lombok/stagingCmd/deployEdge" /> </target> - <target name="changelogToHtml" depends="-compile-webclasses"> - <mkdir dir="build/website" /> - <property name="CHANGELOG_FILE" location="doc/changelog.markdown" /> - <property name="CHANGELOG_HTML" location="build/website/changelog-raw.html" /> - <java fork="true" classname="lombok.website.CompileChangelog" failonerror="true"> - <classpath> - <path refid="build.path" /> - <pathelement location="build/webclasses" /> - </classpath> - <arg value="${CHANGELOG_FILE}" /> - <arg value="${CHANGELOG_HTML}" /> - </java> - <loadfile property="changelog.main" srcFile="build/website/changelog-raw.html" /> - <delete file="build/website/changelog-raw.html" /> - <copy todir="build/website" overwrite="true"> - <fileset dir="website"> - <include name="changelog.html" /> - </fileset> - <filterchain> - <replacetokens> - <token key="CHANGELOG" value="${changelog.main}" /> - </replacetokens> - </filterchain> - </copy> - </target> - - <target name="javadoc" description="Generates the javadoc" depends="version"> + <target name="javadoc" description="Generates the javadoc" depends="-ensure-version, -ensure-fullversion"> <delete dir="build/api" quiet="true" /> <delete dir="doc/api" quiet="true" /> <mkdir dir="build/api" /> @@ -348,12 +172,11 @@ such as converting the changelog into HTML, and creating javadoc. write your own plugins, the other packages are what you're looking for.</body></html> ]]></echo> <javadoc sourcepath="src/core" defaultexcludes="yes" destdir="build/api" windowtitle="Lombok" Overview="${javadoc.overview.html}"> + <package name="lombok" /> + <package name="lombok.experimental" /> + <package name="lombok.extern.*" /> <classpath refid="build.path" /> <classpath location="build/lombok" /> - <link href="http://download.oracle.com/javase/6/docs/api/" /> - <link href="http://www.slf4j.org/api/" /> - <link href="http://commons.apache.org/logging/apidocs/" /> - <link href="http://logging.apache.org/log4j/1.2/apidocs/" /> <header><![CDATA[<a href='https://projectlombok.org/' target='_blank'>Lombok</a> - ]]>v${lombok.version}</header> <bottom><![CDATA[<i>Copyright © 2009-2015 The Project Lombok Authors, licensed under the <a href='http://www.opensource.org/licenses/mit-license.php' target='_blank'>MIT licence</a>.]]></bottom> </javadoc> |