diff options
Diffstat (limited to 'buildScripts')
-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 | 203 |
3 files changed, 28 insertions, 442 deletions
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 697a5ad7..8a2851fb 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"> @@ -34,159 +34,49 @@ such as converting the changelog into HTML, and creating javadoc. <property name="SNIPPET_TAB_STOP" value="2" /> <target name="-website-clean"> - <delete dir="build/website-old" quiet="true" /> + <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" 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-old/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-old/videos" /> - <copy todir="build/website-old/videos"> - <fileset dir="website-old/videos" /> - </copy> - </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" /> - <mkdir dir="build/website-old" /> - <copy todir="build/website-old"> - <fileset dir="website-old"> - <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> + <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/resources" /> <fileset dir="."> - <include name="LICENCE" /> + <include name="LICENSE" /> </fileset> </copy> - <copy file="website/download-edge-none.html" tofile="build/website-old/download-edge.html" /> - <copy todir="build/website-old" overwrite="true"> - <fileset dir="website-old"> - <include name="index.html" /> - <include name="download.html" /> - <include name="slideshow.html" /> - <include name="setup/*.html" /> - <include name="mavenrepo/index.html" /> - </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}" /> + </java> </target> <target name="-website-dist"> <mkdir dir="dist" /> <tar destfile="dist/website.tar.bz2" compression="bzip2"> - <tarfileset dir="build/website-old" /> + <tarfileset dir="build/website" /> <tarfileset dir="doc/api" prefix="api" /> </tar> </target> @@ -206,44 +96,7 @@ such as converting the changelog into HTML, and creating javadoc. trust="true" command="/data/lombok/stagingCmd/deployWebsite" /> </target> - <target name="-integrateSnippet"> - <mkdir dir="build/website-old" /> - <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-old/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-old/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"> + <target name="latestChanges" depends="-compile-webclasses, -ensure-version, -ensure-fullversion"> <java fork="true" classname="lombok.website.CompileChangelog" failonerror="true"> <classpath> <path refid="build.path" /> @@ -256,7 +109,7 @@ such as converting the changelog into HTML, and creating javadoc. </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" /> @@ -276,7 +129,7 @@ such as converting the changelog into HTML, and creating javadoc. <format property="edgeRelease-timestamp" pattern="yyyy-MM-dd HH:mm 'UTC'" timezone="UTC" /> </tstamp> <copy todir="build/website-edge" overwrite="true"> - <fileset dir="website-old"> + <fileset dir="website/extra"> <include name="download-edge.html" /> </fileset> <filterchain> @@ -336,7 +189,7 @@ such as converting the changelog into HTML, and creating javadoc. </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" /> |