Repository: reef Updated Branches: refs/heads/master c00b4430f -> df79b80e0
[REEF-1154] Create release script for website update This change: * updates release.js to have fewer hardcoded URLs and more URLs deduced from version. * creates script update_website.py which updates all website files necessary for new version display. * does several minor changes to simplify the update. JIRA: [REEF-1154](https://issues.apache.org/jira/browse/REEF-1154) Pull request: This closes #800 Project: http://git-wip-us.apache.org/repos/asf/reef/repo Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/df79b80e Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/df79b80e Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/df79b80e Branch: refs/heads/master Commit: df79b80e01398e6ac5da07d1052d9d982760a747 Parents: c00b443 Author: Mariia Mykhailova <[email protected]> Authored: Mon Jan 25 18:29:15 2016 -0800 Committer: Jason (Joo Seong) Jeong <[email protected]> Committed: Sat Jan 30 12:01:25 2016 +0900 ---------------------------------------------------------------------- dev/change_version.py | 9 +- dev/update_website.py | 156 ++++++++++++++++++++++++++ website/src/site/resources/js/release.js | 72 +++++------- website/src/site/site.xml | 4 +- 4 files changed, 191 insertions(+), 50 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/reef/blob/df79b80e/dev/change_version.py ---------------------------------------------------------------------- diff --git a/dev/change_version.py b/dev/change_version.py index 80ef30f..3bdfc80 100644 --- a/dev/change_version.py +++ b/dev/change_version.py @@ -85,6 +85,7 @@ def change_pom(file, new_version): if not line: break changed_str += line + f.close() f = open(file, 'w') f.write(changed_str) @@ -111,6 +112,7 @@ def change_constants_cs(file, new_version): changed_str += line.replace(old_version, new_version) else: changed_str += line + f.close() f = open(file, 'w') f.write(changed_str) @@ -138,6 +140,7 @@ def change_assembly_info_cs(file, new_version): changed_str += line.replace(old_version, new_version) else: changed_str += line + f.close() f = open(file, 'w') f.write(changed_str) @@ -159,6 +162,7 @@ def read_is_snapshot(file): return True else: return False + f.close() """ Change lang/cs/build.props for the release branch @@ -182,6 +186,7 @@ def change_build_props(file, is_snapshot): changed_str += line.replace(old_snapshot_number, "00") else: changed_str += line + f.close() f = open(file, 'w') f.write(changed_str) @@ -210,6 +215,7 @@ def change_shaded_jar_name(file, new_version): changed_str += line.replace(m2.group(1), new_version) else: changed_str += line + f.close() f = open(file, 'w') f.write(changed_str) @@ -234,6 +240,7 @@ def change_project_number_Doxyfile(file, new_version): changed_str += line.replace(old_version, new_version) else: changed_str += line + f.close() f = open(file, 'w') f.write(changed_str) @@ -241,7 +248,7 @@ def change_project_number_Doxyfile(file, new_version): """ -Change version of every pom.xml, every AsssemblyInfo.cs, +Change version of every pom.xml, every AssemblyInfo.cs, Constants.cs, AssemblyInfo.cpp, run.cmd and Resources.xml """ def change_version(reef_home, new_version, pom_only): http://git-wip-us.apache.org/repos/asf/reef/blob/df79b80e/dev/update_website.py ---------------------------------------------------------------------- diff --git a/dev/update_website.py b/dev/update_website.py new file mode 100644 index 0000000..91cb5fd --- /dev/null +++ b/dev/update_website.py @@ -0,0 +1,156 @@ +# 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. + +""" +This script updates website files with the new release information. + +(How to run) +python update_website <reef_home> <reef_version> <sha512> <release_notes_link> + +You can also see how to run the script with "python update_website.py -h" + +(Example) +python update_website ~/reef 0.14.0 8f542ae...c4fed7 https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315820&version=12333768 +""" + + +import os +import re +import sys +import argparse +import datetime + +""" +doap.rdf +""" +def update_doap(file, new_version): + changed_str = "" + after_release_tag = False + + f = open(file, 'r') + + # keep the part of the file before <release> tag as is + # necessary because name and created tags appear several times in the file + while True: + line = f.readline() + if not line: + break + if "<release>" in line: + after_release_tag = True + # update <name>, <revision> and <created> tags + if (("<name>" in line) or ("<revision>" in line)) and after_release_tag: + r = re.compile('>(.*?)<') + m = r.search(line) + old_version = m.group(1) + line = line.replace(old_version, new_version) + if "<created>" in line and after_release_tag: + r = re.compile('<created>(.*?)</created>') + m = r.search(line) + old_date = m.group(1) + new_date = datetime.date.today().strftime('%Y-%m-%d') + line = line.replace(old_date, new_date) + changed_str += line + f.close() + + f = open(file, 'w') + f.write(changed_str) + f.close() + print file + + +""" +downloads.md: replace all release information with new one +""" +def update_downloads(file, new_version, sha512, notes_link): + changed_str = "" + old_version = "" + f = open(file, 'r') + while True: + line = f.readline() + if not line: + break + # figure out old version + if "selected" in line: + r = re.compile('>(.*?)<') + m = r.search(line) + old_version = m.group(1) + if old_version != "" and old_version in line: + line = line.replace(old_version, new_version) + if "selected" in line: + # write this line and construct new one + changed_str += line + line = ' <option value="' + old_version + '">' + old_version + '</option>\n' + if "sha512Text" in line: + r = re.compile('<span id="sha512Text">(.*?)</span>') + m = r.search(line) + line = line.replace(m.group(1), sha512) + if "releaseNotesLink" in line: + r = re.compile('href="(.*?)"') + m = r.search(line) + line = line.replace(m.group(1), notes_link) + if "dotnetApiLink" in line: + r = re.compile('<span id="dotnetApiLink">(.*?)</span>') + m = r.search(line) + line = line.replace(m.group(1), '<a href="apidoc_net/' + new_version + '/index.html">.NET API</a>') + changed_str += line + f.close() + + f = open(file, 'w') + f.write(changed_str) + f.close() + print file + + +""" +release.js: add releaseSha512 and releaseNotes for new version +""" +def update_release_js(file, new_version, sha512, notes_link): + changed_str = "" + f = open(file, 'r') + while True: + line = f.readline() + if not line: + break + if "var releaseSha512" in line: + changed_str += line + changed_str += ' "' + new_version + '": "' + sha512 + '",\n' + continue + if "var releaseNotes" in line: + changed_str += line + changed_str += ' "' + new_version + '": "' + notes_link + '",\n' + continue + changed_str += line + f.close() + + f = open(file, 'w') + f.write(changed_str) + f.close() + print file + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Script for updating REEF website with information about new release.") + parser.add_argument("reef_home", type=str, help="REEF home") + parser.add_argument("reef_version", type=str, help="REEF version") + parser.add_argument("sha512", type=str, help="SHA512 of .tar.gz file") + parser.add_argument("notes_link", type=str, help="Link to release notes for the version") + args = parser.parse_args() + + reef_home = os.path.abspath(args.reef_home) + update_doap(reef_home + "/doap.rdf", args.reef_version) + update_release_js(reef_home + "/website/src/site/resources/js/release.js", args.reef_version, args.sha512, args.notes_link) + update_downloads(reef_home + "/website/src/site/markdown/downloads.md", args.reef_version, args.sha512, args.notes_link) http://git-wip-us.apache.org/repos/asf/reef/blob/df79b80e/website/src/site/resources/js/release.js ---------------------------------------------------------------------- diff --git a/website/src/site/resources/js/release.js b/website/src/site/resources/js/release.js index c98161d..2bc74c3 100644 --- a/website/src/site/resources/js/release.js +++ b/website/src/site/resources/js/release.js @@ -16,19 +16,6 @@ * specific language governing permissions and limitations * under the License. */ -var releaseDirect = { - "0.10.0-incubating": "http://www.apache.org/dist/reef/0.10.0-incubating/apache-reef-0.10.0-incubating.tar.gz", - "0.11.0-incubating": "http://www.apache.org/dist/reef/0.11.0-incubating/apache-reef-0.11.0-incubating.tar.gz", - "0.12.0-incubating": "http://www.apache.org/dist/reef/0.12.0-incubating/apache-reef-0.12.0-incubating.tar.gz", - "0.13.0-incubating": "http://www.apache.org/dist/reef/0.13.0-incubating/apache-reef-0.13.0-incubating.tar.gz" -}; - -var releaseMirror = { - "0.10.0-incubating": "http://www.apache.org/dyn/closer.cgi/reef/0.10.0-incubating", - "0.11.0-incubating": "http://www.apache.org/dyn/closer.cgi/reef/0.11.0-incubating", - "0.12.0-incubating": "http://www.apache.org/dyn/closer.cgi/reef/0.12.0-incubating", - "0.13.0-incubating": "http://www.apache.org/dyn/closer.cgi/reef/0.13.0-incubating" -}; var releaseSha512 = { "0.10.0-incubating": "53844174f701a4c0c99964260c7abb4f8ef9d93aa6b8bdddbca37082e0f5754db5b00e2ae1fdd7732735159df8205a82e7a4dde2ef5abf2ca3e5d7dc43eb62fb", @@ -44,42 +31,33 @@ var releaseNotes = { "0.13.0-incubating": "https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315820&version=12332972" }; -var javaApi = { - "0.10.0-incubating": "apidocs/0.10.0-incubating/index.html", - "0.11.0-incubating": "apidocs/0.11.0-incubating/index.html", - "0.12.0-incubating": "apidocs/0.12.0-incubating/index.html", - "0.13.0-incubating": "apidocs/0.13.0-incubating/index.html" -}; - -var dotnetApi = { -}; - function setReleaseLink() { var releaseVersion = this.document.getElementById("selectRelease").value; - if (releaseDirect[releaseVersion] == undefined) { - this.document.getElementById("listRelease").style.display= "none"; + this.document.getElementById("listRelease").style.display = "block"; + + var releaseDirectStr = "http://www.apache.org/dist/reef/" + releaseVersion + "/apache-reef-" + releaseVersion + ".tar.gz"; + this.document.getElementById("directLink").setAttribute("href", releaseDirectStr); + + var releaseMirror = "http://www.apache.org/dyn/closer.cgi/reef/" + releaseVersion; + this.document.getElementById("mirrorLink").setAttribute("href", releaseMirror); + this.document.getElementById("sha512Text").innerHTML = releaseSha512[releaseVersion]; + this.document.getElementById("releaseNotesLink").setAttribute("href", releaseNotes[releaseVersion]); + + var directReleaseStrSplit = releaseDirectStr.split("/"); + this.document.getElementById("directLink").innerHTML = + directReleaseStrSplit[directReleaseStrSplit.length - 1]; + this.document.getElementById("verificationLink").setAttribute("href", + releaseDirectStr.slice(0, (0 - directReleaseStrSplit[directReleaseStrSplit.length - 1].length))); + + var javaApiLink = "apidocs/" + releaseVersion + "/index.html"; + this.document.getElementById("javaApiLink").setAttribute("href", javaApiLink); + if (releaseVersion.indexOf("incubating") > -1) { + // special case: for versions 0.13.0 and earlier (incubation releases) .NET API documentation is not available + this.document.getElementById("dotnetApiLink").innerHTML = ".NET API available since release 0.14.0"; } else { - this.document.getElementById("listRelease").style.display = "block"; - - var releaseDirectStr = releaseDirect[releaseVersion]; - this.document.getElementById("directLink").setAttribute("href", releaseDirectStr); - this.document.getElementById("mirrorLink").setAttribute("href", releaseMirror[releaseVersion]); - this.document.getElementById("sha512Text").innerHTML = releaseSha512[releaseVersion]; - this.document.getElementById("releaseNotesLink").setAttribute("href", releaseNotes[releaseVersion]); - - var directReleaseStrSplit = releaseDirectStr.split("/"); - this.document.getElementById("directLink").innerHTML = - directReleaseStrSplit[directReleaseStrSplit.length - 1]; - this.document.getElementById("verificationLink").setAttribute("href", - releaseDirectStr.slice(0, (0 - directReleaseStrSplit[directReleaseStrSplit.length - 1].length))); - - this.document.getElementById("javaApiLink").setAttribute("href", javaApi[releaseVersion]); - if (dotnetApi[releaseVersion] == undefined) { - // special case: for versions 0.13.0 and earlier .NET API documentation is not available - this.document.getElementById("dotnetApiLink").innerHTML = ".NET API available since release 0.14.0"; - } else { - this.document.getElementById("dotnetApiLink").innerHTML = "<a href=" + dotnetApi[releaseVersion] + ">.NET API</a>"; - } + var dotnetApiLink = "apidoc_net/" + releaseVersion + "/index.html"; + this.document.getElementById("dotnetApiLink").innerHTML = "<a href=" + dotnetApiLink + ">.NET API</a>"; } - } + +setReleaseLink(); http://git-wip-us.apache.org/repos/asf/reef/blob/df79b80e/website/src/site/site.xml ---------------------------------------------------------------------- diff --git a/website/src/site/site.xml b/website/src/site/site.xml index 700cfc7..1fc1ad4 100644 --- a/website/src/site/site.xml +++ b/website/src/site/site.xml @@ -60,7 +60,6 @@ under the License. <body> <head> - <script src="js/release.js" type="text/javascript"></script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), @@ -126,7 +125,8 @@ under the License. of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. </div> - </footer> + <script src="js/release.js" type="text/javascript"></script> + </footer> <!-- this command gives a bunch of information about the Maven site creation project <menu ref="reports"/>
