#!/bin/bash # Copyright 2015 The Crashpad Authors. All rights reserved. # # Licensed 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. set -e # Generating AsciiDoc documentation requires AsciiDoc, # http://www.methods.co.nz/asciidoc/. For “man” and PDF output, a DocBook # toolchain including docbook-xml and docbook-xsl is also required. # Run from the Crashpad project root directory. cd "$(dirname "${0}")/../.." source doc/support/compat.sh output_dir=out/doc rm -rf \ "${output_dir}/doc" \ "${output_dir}/man" mkdir -p \ "${output_dir}/doc/html" \ "${output_dir}/man/html" \ "${output_dir}/man/man" # Get the version from package.h. version=$(${sed_ext} -n -e 's/^#define PACKAGE_VERSION "(.*)"$/\1/p' package.h) generate() { input="$1" type="$2" case "${type}" in doc) doctype="article" ;; man) doctype="manpage" ;; *) echo "${0}: unknown type ${type}" >& 2 exit 1 ;; esac echo "${input}" base=$(${sed_ext} -e 's%^.*/([^/]+)\.ad$%\1%' <<< "${input}") # Get the last-modified date of $input according to Git, in UTC. git_time_t="$(git log -1 --format=%at "${input}")" git_date="$(LC_ALL=C ${date_time_t}"${git_time_t}" -u '+%B %-d, %Y')" # Create HTML output. asciidoc \ --attribute mansource=Crashpad \ --attribute manversion="${version}" \ --attribute manmanual="Crashpad Manual" \ --attribute git_date="${git_date}" \ --conf-file doc/support/asciidoc.conf \ --doctype "${doctype}" \ --backend html5 \ --attribute stylesheet="${PWD}/doc/support/asciidoc.css" \ --out-file "${output_dir}/${type}/html/${base}.html" \ "${input}" if [[ "${type}" = "man" ]]; then # Create “man” output. # # AsciiDoc 8.6.9 produces harmless incorrect warnings each time this is run: # “a2x: WARNING: --destination-dir option is only applicable to HTML based # outputs”. https://github.com/asciidoc/asciidoc/issues/44 a2x \ --attribute mansource=Crashpad \ --attribute manversion="${version}" \ --attribute manmanual="Crashpad Manual" \ --attribute git_date="${git_date}" \ --asciidoc-opts=--conf-file=doc/support/asciidoc.conf \ --doctype "${doctype}" \ --format manpage \ --destination-dir "${output_dir}/${type}/man" \ "${input}" fi # For PDF output, use an a2x command like the one above, with these options: # --format pdf --fop --destination-dir "${output_dir}/${type}/pdf" } for input in \ doc/*.ad; do generate "${input}" "doc" done for input in \ handler/crashpad_handler.ad \ tools/*.ad \ tools/mac/*.ad; do generate "${input}" "man" done