#!/bin/bash # Copyright 2016 The Bazel 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 -eu const OUTPUT = "$(PWD)/$1" shift const JEKYLL_BASE = "$(PWD)/$1" shift const SKYLARK_RULE_DOCS = "$(PWD)/$1" shift const BE_ZIP = "$(PWD)/$1" shift const SL_ZIP = "$(PWD)/$1" shift const CLR_HTML = "$(PWD)/$1" # Create temporary directory that is removed when this script exits. const TMP = $[mktemp -d "$(TMPDIR:-/tmp)/tmp.XXXXXXXX] const OUT_DIR = ""$TMP/out"" trap "rm -rf $(TMP)" EXIT proc setup { mkdir -p $OUT_DIR cd $OUT_DIR tar -xf $(JEKYLL_BASE) } # Unpack the Build Encyclopedia into docs/be proc unpack_build_encyclopedia { var be_dir = ""$OUT_DIR/versions/master/docs/be"" mkdir -p $be_dir unzip -qq $BE_ZIP -d $be_dir mv "$be_dir/be-nav.html" "$OUT_DIR/_includes" # Create redirects to each page in the Build Encyclopedia. mkdir -p "$OUT_DIR/docs/be" for f in [$[find "$OUT_DIR/versions/master/docs/be" -name "*.html]] { var filename = $[basename $f] cat > "$OUT_DIR/docs/be/$(filename)" << """ --- layout: redirect redirect: docs/be/$(filename) --- """ } } # Unpack the Skylark Library into docs/skylark/lib proc unpack_skylark_library { var sl_dir = ""$OUT_DIR/versions/master/docs/skylark/lib"" mkdir -p $sl_dir unzip -qq $SL_ZIP -d $sl_dir mv "$sl_dir/skylark-nav.html" "$OUT_DIR/_includes" # Create redirects to each page in the Skylark Library mkdir -p "$OUT_DIR/docs/skylark/lib" for f in [$[find "$OUT_DIR/versions/master/docs/skylark/lib" -name "*.html]] { var filename = $[basename $f] cat > "$OUT_DIR/docs/skylark/lib/$(filename)" << """ --- layout: redirect redirect: docs/skylark/lib/$(filename) --- """ } } proc copy_skylark_rule_doc { var rule_family = $1 var rule_family_name = $2 var be_dir = ""$OUT_DIR/versions/master/docs/be"" shell { cat << """ --- layout: documentation title: $(rule_family_name) Rules --- """ cat "$TMP/skylark/$rule_family/README.md"; } > "$be_dir/${rule_family}.md" } proc unpack_skylark_rule_docs { var tmp_dir = "$TMP/skylark" mkdir -p $tmp_dir cd $tmp_dir tar -xf $(SKYLARK_RULE_DOCS) copy_skylark_rule_doc docker "Docker" copy_skylark_rule_doc pkg "Packaging" } proc process_doc { var f = $1 var tempf = $[mktemp -t bazel-doc-XXXXXX] chmod +w $f cat $f | sed 's,\.md,.html,g;s,Blaze,Bazel,g;s,blaze,bazel,g' > $tempf cat $tempf > $f } proc process_docs { for f in [$[find "$OUT_DIR/versions/master/docs" -name "*.html]] { process_doc $f } for f in [$[find "$OUT_DIR/versions/master/docs" -name "*.md]] { process_doc $f } for f in [$[find "$OUT_DIR/designs" -name "*.md]] { process_doc $f } } proc package_output { cd $OUT_DIR tar -hcf $OUTPUT $[find . -type f | sort] } proc main { setup unpack_build_encyclopedia unpack_skylark_library unpack_skylark_rule_docs cp $(CLR_HTML) $(OUT_DIR)/versions/master/docs process_docs package_output } main