github.com/thiagoyeds/go-cloud@v0.26.0/internal/testing/check_mod_tidy.sh (about) 1 #!/usr/bin/env bash 2 # Copyright 2019 The Go Cloud Development Kit Authors 3 # 4 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # you may not use this file except in compliance with the License. 6 # You may obtain a copy of the License at 7 # 8 # https://www.apache.org/licenses/LICENSE-2.0 9 # 10 # Unless required by applicable law or agreed to in writing, software 11 # distributed under the License is distributed on an "AS IS" BASIS, 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 # See the License for the specific language governing permissions and 14 # limitations under the License. 15 16 # This script checks to see if `go mod tidy` has been run on the module 17 # in the current directory. 18 # 19 # It exits with status 1 if "go mod tidy && go list -deps ./..." would 20 # make changes. 21 # 22 # TODO(rvangent): Replace this with `go mod tidy --check` when it exists: 23 # https://github.com/golang/go/issues/27005. 24 # 25 # TODO(rvangent): Drop the "go list" part here and in gomodcleanup.sh once 26 # https://github.com/golang/go/issues/31248 is fixed. 27 28 set -euo pipefail 29 30 TMP_GOMOD=$(mktemp) 31 TMP_GOSUM=$(mktemp) 32 33 function cleanup() { 34 # Restore the original files in case "go mod tidy" made changes. 35 if [[ -f "$TMP_GOMOD" ]]; then 36 mv "$TMP_GOMOD" ./go.mod 37 fi 38 if [[ -f "$TMP_GOSUM" ]]; then 39 mv "$TMP_GOSUM" ./go.sum 40 fi 41 } 42 trap cleanup EXIT 43 44 # Make copies of the current files. 45 cp ./go.mod "$TMP_GOMOD" 46 cp ./go.sum "$TMP_GOSUM" 47 48 # Modifies the files in-place. 49 go mod tidy 50 go list -deps ./... &> /dev/null 51 52 # Check for diffs. 53 diff -u "$TMP_GOMOD" ./go.mod 54 diff -u "$TMP_GOSUM" ./go.sum