123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #! /bin/bash
- # Copyright 2020 The gRPC Authors
- #
- # 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.
- #
- # A script to automatically generate API references and push to GitHub.
- # This script covers Core/C++/ObjC/C#/PHP/Python. Due to lack of tooling for
- # Cython, Python document generation unfortunately needs to compile everything.
- # So, this script will take couple minutes to run.
- #
- # Generate and push:
- #
- # tools/distrib/docgen/all_lang-docgen.sh YOUR_GITHUB_USERNAME
- #
- # Just generate:
- #
- # tools/distrib/docgen/all_lang-docgen.sh
- #
- set -e
- # Find out the gRPC version and print it
- GRPC_VERSION="$(grep -m1 -Eo ' version: .*' build_handwritten.yaml | grep -Eo '[0-9][^ ]*')"
- echo "Generating documents for version ${GRPC_VERSION}..."
- # Specifies your GitHub user name or generates documents locally
- if [ $# -eq 0 ]; then
- read -r -p "- Are you sure to generate documents without pushing to GitHub? [y/N] " response
- if [[ "${response[0]}" =~ ^([yY][eE][sS]|[yY])$ ]]; then
- GITHUB_USER=''
- else
- echo "Generation stopped"
- exit 1
- fi
- else
- if [ $# -eq 1 ]; then
- GITHUB_USER=$1
- else
- echo "Too many arguments!"
- exit 1
- fi
- fi
- # Exits on pending changes; please double check for unwanted code changes
- git diff --exit-code
- git submodule update --init --recursive
- # Changes to project root
- dir=$(dirname "${0}")
- cd "${dir}/../../.."
- # Clones the API reference GitHub Pages branch
- PAGES_PATH="/tmp/gh-pages"
- rm -rf "${PAGES_PATH}"
- git clone --single-branch https://github.com/grpc/grpc -b gh-pages "${PAGES_PATH}"
- # Generates Core / C++ / ObjC / PHP documents
- rm -rf "${PAGES_PATH}/core" "${PAGES_PATH}/cpp" "${PAGES_PATH}/objc" "${PAGES_PATH}/php"
- echo "Generating Core / C++ / ObjC / PHP documents in Docker..."
- docker run --rm -it \
- -v "$(pwd)":/work/grpc \
- --user "$(id -u):$(id -g)" \
- hrektts/doxygen /work/grpc/tools/doxygen/run_doxygen.sh
- mv doc/ref/c++/html "${PAGES_PATH}/cpp"
- mv doc/ref/core/html "${PAGES_PATH}/core"
- mv doc/ref/objc/html "${PAGES_PATH}/objc"
- mv doc/ref/php/html "${PAGES_PATH}/php"
- # Generates C# documents
- rm -rf "${PAGES_PATH}/csharp"
- echo "Generating C# documents in Docker..."
- docker run --rm -it \
- -v "$(pwd)":/work \
- -w /work/src/csharp/docfx \
- --user "$(id -u):$(id -g)" \
- tsgkadot/docker-docfx:latest docfx
- mv src/csharp/docfx/html "${PAGES_PATH}/csharp"
- # Generates Python documents
- rm -rf "${PAGES_PATH}/python"
- echo "Generating Python documents in Docker..."
- docker run --rm -it \
- -v "$(pwd)":/work \
- -w /work \
- --user "$(id -u):$(id -g)" \
- python:3.8 tools/distrib/docgen/_generate_python_doc.sh
- mv doc/build "${PAGES_PATH}/python"
- # At this point, document generation is finished.
- echo "================================================================="
- echo " Successfully generated documents for version ${GRPC_VERSION}."
- echo "================================================================="
- # Uploads to GitHub
- if [[ -n "${GITHUB_USER}" ]]; then
- BRANCH_NAME="doc-${GRPC_VERSION}"
- (cd "${PAGES_PATH}"
- git remote add "${GITHUB_USER}" "git@github.com:${GITHUB_USER}/grpc.git"
- git checkout -b "${BRANCH_NAME}"
- git add --all
- git commit -m "Auto-update documentation for gRPC ${GRPC_VERSION}"
- git push --set-upstream "${GITHUB_USER}" "${BRANCH_NAME}"
- )
- echo "Please check https://github.com/${GITHUB_USER}/grpc/tree/${BRANCH_NAME} for generated documents."
- echo "Click https://github.com/grpc/grpc/compare/gh-pages...${GITHUB_USER}:${BRANCH_NAME} to create a PR."
- else
- echo "Please check ${PAGES_PATH} for generated documents."
- fi
|