local-mod-replace.sh

 1#1/usr/bin/env bash
 2
 3PROJECT_DIR=""
 4SMITHY_SOURCE_DIR=$(cd `dirname $0` && pwd)
 5
 6usage() {
 7  echo "Usage: $0 [-s SMITHY_SOURCE_DIR] [-d PROJECT_DIR]" 1>&2
 8  exit 1
 9}
10
11while getopts "hs:d:" options; do
12  case "${options}" in
13  s)
14    SMITHY_SOURCE_DIR=${OPTARG}
15    if [ "$SMITHY_SOURCE_DIR" == "" ]; then
16      echo "path to smithy-go source directory is required" || exit
17      usage
18    fi
19    ;;
20  d)
21    PROJECT_DIR=${OPTARG}
22    ;;
23  h)
24    usage
25    ;;
26  *)
27    usage
28    ;;
29  esac
30done
31
32if [ "$PROJECT_DIR" != "" ]; then
33  cd $PROJECT_DIR || exit
34fi
35
36go mod graph | awk '{print $1}' | cut -d '@' -f 1 | sort | uniq | grep "github.com/aws/smithy-go" | while read x; do
37  repPath=${x/github.com\/aws\/smithy-go/${SMITHY_SOURCE_DIR}}
38  echo -replace $x=$repPath
39done | xargs go mod edit