| #!/bin/bash |
| |
| set -ex # Exit on error; debugging enabled. |
| set -o pipefail # Fail a pipe if any sub-command fails. |
| |
| # - Source them sweet sweet helpers. |
| source "$(dirname $0)/common.sh" |
| |
| # - Check to make sure it's safe to modify the user's git repo. |
| git status --porcelain | fail_on_output |
| |
| # - Undo any edits made by this script. |
| cleanup() { |
| git reset --hard HEAD |
| } |
| trap cleanup EXIT |
| |
| # - Installs protoc into your ${GOBIN} directory, if requested. |
| # ($GOBIN might not be the best place for the protoc binary, but is at least |
| # consistent with the place where all binaries installed by scripts in this repo |
| # go.) |
| if [[ "$1" = "-install" ]]; then |
| if [[ "${GITHUB_ACTIONS}" = "true" ]]; then |
| source ./scripts/install-protoc.sh "/home/runner/go" |
| else |
| die "run protoc installer https://github.com/grpc/grpc-go/blob/master/scripts/install-protoc.sh" |
| fi |
| echo SUCCESS |
| exit 0 |
| elif [[ "$#" -ne 0 ]]; then |
| die "Unknown argument(s): $*" |
| fi |
| |
| for MOD_FILE in $(find . -name 'go.mod'); do |
| MOD_DIR=$(dirname ${MOD_FILE}) |
| pushd ${MOD_DIR} |
| go generate ./... |
| popd |
| done |
| |
| # - Check that generated proto files are up to date. |
| git status --porcelain 2>&1 | fail_on_output || \ |
| (git status; git --no-pager diff; exit 1) |
| |
| echo SUCCESS |
| exit 0 |