| #!/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 __future__ import print_function |
| |
| from generate import * |
| |
| import uuid |
| from xml.etree import ElementTree |
| |
| def gen_broker_j_books(release, source_dir, output_dir): |
| toplevel_pom = join(source_dir, "pom.xml") |
| input_dir = join(source_dir, "doc") |
| |
| cpp_broker_book_url = "/releases/qpid-cpp-{{current_cpp_release}}/cpp-broker/book/" |
| jms_client010_book_url = "/releases/qpid-jms-amqp-0-x-{{current_jms_amqp_0_x_release}}/jms-client-0-10/book/" |
| |
| call("mvn -f {} -pl doc -amd -Ddoc=true package -DqpidCppBook={} -DqpidJmsClient010Book={}", |
| toplevel_pom, |
| cpp_broker_book_url, |
| jms_client010_book_url) |
| |
| java_broker_input_dir = join(input_dir, "java-broker", "target", "docbkx") |
| java_broker_book_dir = join(output_dir, "book") |
| |
| remove(java_broker_book_dir) |
| |
| copy(java_broker_input_dir, java_broker_book_dir) |
| |
| for path in find(output_dir, "*.html"): |
| print(path) |
| |
| tree = ElementTree.parse(path) |
| elem = tree.find(".//{http://www.w3.org/1999/xhtml}body") |
| |
| elem.tag = "div" |
| elem.set("class", "docbook") |
| |
| remove_namespace(elem, "http://www.w3.org/1999/xhtml") |
| |
| # A hack to preserve docbook's empty anchors in an |
| # IE-compatible way |
| |
| target = str(uuid.uuid4()) |
| |
| for a in tree.iter("a"): |
| if a.text is None: |
| a.text = target |
| |
| content = ElementTree.tostring(elem, encoding="unicode") |
| content = content.replace(target, "") |
| |
| write("{}.in".format(path), content) |
| remove(path) |
| |
| # From http://homework.nwsnet.de/releases/45be/ |
| def remove_namespace(doc, namespace): |
| """Remove namespace in the passed document in place.""" |
| ns = u'{%s}' % namespace |
| nsl = len(ns) |
| for elem in doc.iter(): |
| if elem.tag.startswith(ns): |
| old_tag=elem.tag |
| elem.tag = elem.tag[nsl:] |
| |
| ## Now do stuff ## |
| |
| release, issues_release, source_release, release_dir, checkout_dir = setup_release_script() |
| source_dir = checkout_dir or fetch_source("broker-j", source_release) |
| |
| gen_broker_j_books(release, source_dir, release_dir) |
| |
| notice("Docs generated") |