| #!/usr/bin/env bash |
| # |
| # This file is just a wrapper around the 'go mod vendor' tool. |
| # For updating dependencies you should change `go.mod` file in root of the |
| # project. |
| |
| set -e |
| |
| SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| PROJECT_DIR="$(cd "$SCRIPTDIR/.." && pwd)" |
| |
| # All module paths are relative to PROJECT_DIR |
| # Currently only a subset of modules are vendored. |
| vendor_modules_paths=(. man) |
| modules_paths=(api client "${vendor_modules_paths[@]}") |
| |
| tidy() ( |
| for module_path in "${modules_paths[@]}"; do |
| ( |
| set -x |
| cd "$PROJECT_DIR/$module_path" |
| go mod tidy |
| ) |
| done |
| ) |
| |
| vendor() ( |
| for module_path in "${vendor_modules_paths[@]}"; do |
| ( |
| set -x |
| cd "$PROJECT_DIR/$module_path" |
| go mod vendor |
| ) |
| done |
| ) |
| |
| replace() ( |
| set -x |
| go mod edit -replace=github.com/moby/moby/api=./api -replace=github.com/moby/moby/client=./client |
| go mod edit -modfile client/go.mod -replace=github.com/moby/moby/api=../api |
| ) |
| |
| dropreplace() ( |
| set -x |
| ref=$1 |
| if [ -z "$ref" ]; then |
| # module@master not always results in the actual latest commit on the |
| # master branch. |
| # Use the actual branch from the upstream or origin remote. |
| for r in "upstream" "origin"; do |
| if git remote get-url "$r" >/dev/null 2>&1; then |
| ref="$r/master" |
| break |
| fi |
| done |
| if [ -z "$ref" ]; then |
| echo "No valid master ref found" >&2 |
| exit 1 |
| fi |
| echo "Using $ref" >&2 |
| fi |
| |
| ref=$(git rev-parse "$ref") |
| go mod edit -dropreplace=github.com/moby/moby/api -dropreplace=github.com/moby/moby/client |
| go mod edit -modfile client/go.mod -dropreplace=github.com/moby/moby/api |
| |
| go mod edit -modfile client/go.mod -require="github.com/moby/moby/api@$ref" |
| (cd client; go mod tidy) |
| |
| go mod edit \ |
| -require="github.com/moby/moby/api@$ref" \ |
| -require="github.com/moby/moby/client@$ref" |
| go mod tidy |
| go mod vendor |
| ) |
| |
| help() { |
| printf "%s:\n" "$(basename "$0")" |
| echo " - tidy: run go mod tidy" |
| echo " - vendor: run go mod vendor" |
| echo " - replace: run go mod edit replace for local modules" |
| echo " - dropreplace [<gitref>]: remove replace rules and update the api and client modules to the provided ref (defaults to upstream/master)" |
| echo " - all: run tidy && vendor" |
| echo " - help: show this help" |
| } |
| |
| case "$1" in |
| tidy) tidy ;; |
| vendor) vendor ;; |
| replace) replace ;; |
| dropreplace) dropreplace "$2" ;; |
| ""|all) tidy && vendor ;; |
| *) help ;; |
| esac |