summaryrefslogtreecommitdiff
path: root/libc/ci/dox.sh
diff options
context:
space:
mode:
Diffstat (limited to 'libc/ci/dox.sh')
-rw-r--r--libc/ci/dox.sh63
1 files changed, 50 insertions, 13 deletions
diff --git a/libc/ci/dox.sh b/libc/ci/dox.sh
index 521743e..ce55081 100644
--- a/libc/ci/dox.sh
+++ b/libc/ci/dox.sh
@@ -6,28 +6,65 @@
set -ex
-TARGETS=$(grep html_root_url src/lib.rs | sed 's/.*".*\/\(.*\)"/\1/'| sed 's/)//')
+TARGET_DOC_DIR=target/doc
+README=README.md
+PLATFORM_SUPPORT=platform-support.md
-rm -rf target/doc
-mkdir -p target/doc
+rm -rf $TARGET_DOC_DIR
+mkdir -p $TARGET_DOC_DIR
-cp ci/landing-page-head.html target/doc/index.html
+# List all targets that do currently build successfully:
+# shellcheck disable=SC1003
+grep '[\d|\w|-]* \\' ci/build.sh > targets
+sed -i.bak 's/ \\//g' targets
+grep '^[_a-zA-Z0-9-]*$' targets > tmp && mv tmp targets
-for target in $TARGETS; do
- echo "documenting ${target}"
+# Create a markdown list of supported platforms in $PLATFORM_SUPPORT
+rm $PLATFORM_SUPPORT || true
- rustdoc -o "target/doc/${target}" --target "${target}" src/lib.rs --cfg cross_platform_docs \
- --crate-name libc
+printf '### Platform-specific documentation\n' >> $PLATFORM_SUPPORT
- echo "<li><a href=\"/libc/${target}/libc/index.html\">${target}</a></li>" \
- >> target/doc/index.html
-done
+while read -r target; do
+ echo "documenting ${target}"
-cat ci/landing-page-footer.html >> target/doc/index.html
+ case "${target}" in
+ *apple*)
+ # FIXME:
+ # We can't build docs of apple targets from Linux yet.
+ continue
+ ;;
+ *)
+ ;;
+ esac
+
+ rustup target add "${target}" || true
+
+ # If cargo doc fails, then try xargo:
+ if ! cargo doc --target "${target}" \
+ --no-default-features --features extra_traits ; then
+ xargo doc --target "${target}" \
+ --no-default-features --features extra_traits
+ fi
+
+ cp -r "target/${target}/doc" "${TARGET_DOC_DIR}/${target}"
+
+ echo "* [${target}](${target}/libc/index.html)" >> $PLATFORM_SUPPORT
+done < targets
+
+# Replace <div class="platform_support"></div> with the contents of $PLATFORM_SUPPORT
+cp $README $TARGET_DOC_DIR
+line=$(grep -n '<div class="platform_docs"></div>' $README | cut -d ":" -f 1)
+
+set +x
+{ head -n "$((line-1))" $README; cat $PLATFORM_SUPPORT; tail -n "+$((line+1))" $README; } > $TARGET_DOC_DIR/$README
+set -x
+
+# Copy the licenses
+cp LICENSE-* $TARGET_DOC_DIR/
# If we're on travis, not a PR, and on the right branch, publish!
if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_BRANCH" = "master" ]; then
pip install ghp_import --install-option="--prefix=$HOME/.local"
- "${HOME}/.local/bin/ghp-import" -n target/doc
+ "${HOME}/.local/bin/ghp-import" $TARGET_DOC_DIR
git push -qf "https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git" gh-pages
fi