diff --git a/.gitignore b/.gitignore index 428e142ad..47aabc929 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,7 @@ dist/ # OS generated files .DS_Store + +# Go workspace file +go.work +go.work.sum \ No newline at end of file diff --git a/scripts/replace.sh b/scripts/replace.sh new file mode 100755 index 000000000..0c37f4b85 --- /dev/null +++ b/scripts/replace.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# Add replace directives to local files to go.work +set -eo pipefail + +while getopts "s:" option; do + case "${option}" in + s) + SDK_DIR=${OPTARG} + ;; + + *) + echo "call: $0 [-s sdk-dir] " + exit 0 + ;; + esac +done +shift $((OPTIND-1)) + +if [ -z "$SDK_DIR" ]; then + SDK_DIR=../stackit-sdk-generator/sdk-repo-updated + echo "No SDK_DIR set, using $SDK_DIR" +fi + + +if [ ! -f go.work ]; then + go work init + go work use . +else + echo "go.work already exists" +fi + +if [ $# -gt 0 ];then + # modules passed via commandline + for service in $*; do + if [ ! -d $SDK_DIR/services/$service ]; then + echo "service directory $SDK_DIR/services/$service does not exist" + exit 1 + fi + echo "replacing selected service $service" + if [ "$service" = "core" ]; then + go work edit -replace github.com/stackitcloud/stackit-sdk-go/core=$SDK_DIR/core + else + go work edit -replace github.com/stackitcloud/stackit-sdk-go/services/$service=$SDK_DIR/services/$service + fi + done +else + # replace all modules + echo "replacing all services" + go work edit -replace github.com/stackitcloud/stackit-sdk-go/core=$SDK_DIR/core + for n in $(find ${SDK_DIR}/services -name go.mod);do + service=$(dirname $n) + service=${service#${SDK_DIR}/services/} + go work edit -replace github.com/stackitcloud/stackit-sdk-go/services/$service=$(dirname $n) + done +fi +go work edit -fmt +go work sync