mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
dropreplace now accepts an optional argument that allows to manually specify a git ref to use for the modules. It's not required though and if not present it will default to a master branch from the upstream (preferred) or origin remote. This is much more reliable than "module@master" which for some reason tends to not resolve to the actual latest commit on the master branch. Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
95 lines
2.3 KiB
Bash
Executable File
95 lines
2.3 KiB
Bash
Executable File
#!/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
|