blob: 22dab72abba0eb45a853533891e01678aa28ec99 [file] [log] [blame]
#!/usr/bin/python
#
# 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.
#
from generate import *
from datetime import datetime
source_artefact_records = (
("qpid-java-{}.tar.gz", "Qpid Broker for Java, Qpid JMS for AMQP 0-9-1/0-10"),
)
binary_artefact_records = (
("qpid-broker-{}-bin.tar.gz", "Qpid Broker for Java"),
("qpid-client-{}-bin.tar.gz", "Qpid JMS for AMQP 0-9-1/0-10"),
)
component_records = (
("broker-j", "Qpid Broker for Java", "Java", "JVM", "1.0, 0-10, 0-9-1, 0-9, 0-8"),
("jms/amqp-0-x.html","Qpid JMS for AMQP 0-9-1/0-10", "Java", "JVM", "0-10, 0-9-1, 0-9, 0-8")
)
documentation = \
"""
<div class="two-column" markdown="1">
- [Installing Qpid Broker for Java](java-broker/book/Java-Broker-Installation.html)
- [Broker book](java-broker/book/index.html)
- [JMS API reference](http://docs.oracle.com/javaee/1.4/api/javax/jms/package-summary.html)
- [Using the Qpid JMS client for AMQP 0-10](jms-client-0-10/book/index.html)
- [Using the Qpid JMS client for AMQP 0-9-1](jms-client-0-8/book/index.html)
- [JMS examples for AMQP 0-10](qpid-jms/examples/index.html)
- [JMS examples for AMQP 0-9-1, 0-9, 0-8](jms-client-0-8/book/JMS-Client-0-8-Examples.html)
</div>
"""
template = \
"""
;;
;; 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.
;;
#Qpid for Java {release}
Qpid for Java offers an AMQP-fluent implementation of JMS and a message
broker written in Java that stores, routes, and forwards messages
using AMQP. More about [Qpid]({{{{site_url}}}}/index.html).
For a detailed list of the changes in this release, see the [release
notes](release-notes.html).
It's important to [verify the
integrity]({{{{site_url}}}}/download.html#verify-what-you-download) of the
files you download.
## Source archives
| Content | Download | Verify |
|---------|----------|--------|
{source_artefacts}
## Binaries
| Content | Download | Verify |
|---------|----------|--------|
{binary_artefacts}
## Components
| Component | Languages | Platforms | AMQP versions |
|-----------|-----------|-----------|---------------|
{components}
## Documentation
{documentation}
## More information
- [All release artefacts](http://archive.apache.org/dist/qpid/java/{release})
- [Resolved issues in JIRA]({issues_url})
- [Source repository tag](https://git-wip-us.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/{release})
- [GitHub mirror](https://github.com/apache/qpid-broker-j/tree/{release})
<script type="text/javascript">
_deferredFunctions.push(function() {{
if ("{release}" === "{{{{current_java_release}}}}") {{
_modifyCurrentReleaseLinks();
}}
}});
</script>
"""
def gen_release_page(release, issues_release, source_release, release_dir):
output_path = join(release_dir, "index.md")
components = list()
source_artefacts = list()
source_artefact_url = "http://archive.apache.org/dist/qpid/java/{}/{}"
source_artefact_url_https = "https://archive.apache.org/dist/qpid/java/{}/{}"
binary_artefacts = list()
binary_artefact_url = "http://archive.apache.org/dist/qpid/java/{}/binaries/{}"
binary_artefact_url_https = "https://archive.apache.org/dist/qpid/java/{}/binaries/{}"
for artefact, summary in source_artefact_records:
artefact = artefact.format(release)
artefact_url = source_artefact_url.format(release, artefact)
artefact_url_https = source_artefact_url_https.format(release, artefact)
asc_url = "{}.asc".format(artefact_url_https)
sha_url = "{}.sha512".format(artefact_url_https)
args = summary, artefact, artefact_url, asc_url, sha_url
row = "| {} | [{}]({}) | [ASC]({}), [SHA512]({}) |".format(*args)
source_artefacts.append(row)
for artefact, summary in binary_artefact_records:
artefact = artefact.format(release)
artefact_url = binary_artefact_url.format(release, artefact)
artefact_url_https = binary_artefact_url_https.format(release, artefact)
asc_url = "{}.asc".format(artefact_url_https)
sha_url = "{}.sha512".format(artefact_url_https)
args = summary, artefact, artefact_url, asc_url, sha_url
row = "| {} | [{}]({}) | [ASC]({}), [SHA512]({}) |".format(*args)
binary_artefacts.append(row)
for key, name, languages, platforms, amqp_versions in component_records:
if key.endswith(".html"):
link = "[{}]({{{{site_url}}}}/components/{})".format(name, key)
else:
link = "[{}]({{{{site_url}}}}/components/{}/index.html)".format(name, key)
args = link, languages, platforms, amqp_versions
components.append("| {} | {} | {} | {} |".format(*args))
source_artefacts = "\n".join(source_artefacts)
binary_artefacts = "\n".join(binary_artefacts)
components = "\n".join(components)
jql = "project = QPID AND fixVersion = '{}' AND resolution = 'fixed' ORDER BY priority DESC".format(issues_release)
issues_url = "https://issues.apache.org/jira/issues/?jql={}".format(urllib.quote_plus(jql))
vars = locals()
vars["documentation"] = documentation
output = template.format(**vars)
output = output.strip()
write(output_path, output)
trunk_template = """
;;
;; 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.
;;
# Qpid for Java documentation snapshot
<div class="feature" markdown="1">n
## Warning! This is a snapshot of work in progress
Documentation found here may be incorrect or incomplete. For a
smoother experience, see the [current stable
release]({{{{current_java_release_url}}}}/index.html).
This content was generated at {time} on {day}, {date}.
</div>
## Documentation
{documentation}
## More information
- [Source repository](https://git-wip-us.apache.org/repos/asf/qpid-broker-j.git)
- [GitHub mirror](https://github.com/apache/qpid-broker-j)
"""
def gen_trunk_release_page(release_dir):
output_path = join(release_dir, "index.md")
now = datetime.now()
day = now.strftime("%A")
date = now.strftime("%d %B %Y")
time = now.strftime("%H:%M %Z")
vars = locals()
vars["documentation"] = documentation
output = trunk_template.format(**vars)
output = output.strip()
write(output_path, output)
## Now do stuff ##
release, issues_release, source_release, release_dir, checkout_dir = setup_release_script()
if release == "trunk":
gen_trunk_release_page(release_dir)
else:
gen_release_page(release, issues_release, source_release, release_dir)
notice("Release page generated")