#!/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 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@master' (cd client; go mod tidy) go mod edit \ -require='github.com/moby/moby/api@master' \ -require='github.com/moby/moby/client@master' 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: run go mod edit dropreplace for local modules" echo " - all: run tidy && vendor" echo " - help: show this help" } case "$1" in tidy) tidy ;; vendor) vendor ;; replace) replace ;; dropreplace) dropreplace ;; ""|all) tidy && vendor ;; *) help ;; esac