#!/usr/bin/env bash set -euo pipefail if [ "$CIRCLE_BRANCH" == "" ]; then echo "this script is meant to be run on CircleCI, exiting" echo 1 fi # check for changes in the `rpc/core` directory did_rpc_change=$(git diff --name-status $CIRCLE_BRANCH origin/master | grep rpc/core) if [ "$did_rpc_change" == "" ]; then echo "no changes detected in rpc/core, exiting" exit 0 else echo "changes detected in rpc/core, continuing" fi # only run this script on changes to rpc/core committed to develop if [ "$CIRCLE_BRANCH" != "master" ]; then echo "the branch being built isn't master, exiting" exit 0 else echo "on master, building the RPC docs" fi # godoc2md used to convert the go documentation from # `rpc/core` into a markdown file consumed by Slate go get github.com/davecheney/godoc2md # slate works via forks, and we'll be committing to # master branch, which will trigger our fork to run # the `./deploy.sh` and publish via the `gh-pages` branch slate_repo=github.com/tendermint/slate slate_path="$GOPATH"/src/"$slate_repo" if [ ! -d "$slate_path" ]; then git clone https://"$slate_repo".git $slate_path fi # the main file we need to update if rpc/core changed destination="$slate_path"/source/index.html.md # we remove it then re-create it with the latest changes rm $destination header="--- title: RPC Reference language_tabs: - shell - go toc_footers: - Tendermint - Documentation Powered by Slate search: true ---" # write header to the main slate file echo "$header" > "$destination" # generate a markdown from the godoc comments, using a template rpc_docs=$(godoc2md -template rpc/core/doc_template.txt github.com/tendermint/tendermint/rpc/core | grep -v -e "pipe.go" -e "routes.go" -e "dev.go" | sed 's$/src/target$https://github.com/tendermint/tendermint/tree/master/rpc/core$') # append core RPC docs echo "$rpc_docs" >> "$destination" # commit the changes cd $slate_path git config --global user.email "github@tendermint.com" git config --global user.name "tenderbot" git commit -a -m "Update tendermint RPC docs via CircleCI" git push -q https://${GITHUB_ACCESS_TOKEN}@github.com/tendermint/slate.git master