mirror of
https://github.com/zeromicro/go-zero.git
synced 2026-05-10 16:30:01 +08:00
70 lines
2.1 KiB
Bash
Executable File
70 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Scenario 04: compare old vs new goctl output — transitive imports
|
|
# Usage: bash compare.sh
|
|
# Requires: go install github.com/zeromicro/go-zero/tools/goctl@latest (auto-installed)
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
GOCTL_ROOT="$(cd "$SCRIPT_DIR/../../../.." && pwd)"
|
|
NEW_GOCTL="$GOCTL_ROOT/bin/goctl"
|
|
OLD_GOCTL="$(go env GOPATH)/bin/goctl"
|
|
OUT_OLD="$SCRIPT_DIR/output_old"
|
|
OUT_NEW="$SCRIPT_DIR/output_new"
|
|
|
|
verify_build() {
|
|
local dir="$1" label="$2"
|
|
echo "Verifying $label ..."
|
|
cd "$dir"
|
|
go mod tidy
|
|
if go build ./...; then
|
|
echo " ✅ $label: build passed"
|
|
else
|
|
echo " ❌ $label: build failed"
|
|
exit 1
|
|
fi
|
|
cd "$SCRIPT_DIR"
|
|
}
|
|
|
|
# Install released goctl and build local goctl
|
|
echo ">>> Installing goctl@latest ..."
|
|
go install github.com/zeromicro/go-zero/tools/goctl@latest
|
|
echo ">>> Building local goctl ..."
|
|
go build -o "$NEW_GOCTL" "$GOCTL_ROOT"
|
|
|
|
# Generate with old goctl
|
|
echo ">>> Generating with old goctl ..."
|
|
rm -rf "$OUT_OLD" && mkdir -p "$OUT_OLD/pb"
|
|
(cd "$OUT_OLD" && go mod init example.com/demo/s04_transitive > /dev/null 2>&1)
|
|
cd "$SCRIPT_DIR"
|
|
"$OLD_GOCTL" rpc protoc main.proto \
|
|
--go_out="$OUT_OLD/pb" \
|
|
--go-grpc_out="$OUT_OLD/pb" \
|
|
--zrpc_out="$OUT_OLD/rpc" \
|
|
--go_opt=paths=source_relative \
|
|
--go-grpc_opt=paths=source_relative \
|
|
--proto_path=.
|
|
verify_build "$OUT_OLD" "old"
|
|
|
|
# Generate with new goctl
|
|
echo ">>> Generating with new goctl ..."
|
|
rm -rf "$OUT_NEW" && mkdir -p "$OUT_NEW/pb"
|
|
(cd "$OUT_NEW" && go mod init example.com/demo/s04_transitive > /dev/null 2>&1)
|
|
cd "$SCRIPT_DIR"
|
|
"$NEW_GOCTL" rpc protoc main.proto \
|
|
--go_out="$OUT_NEW/pb" \
|
|
--go-grpc_out="$OUT_NEW/pb" \
|
|
--zrpc_out="$OUT_NEW/rpc" \
|
|
--go_opt=paths=source_relative \
|
|
--go-grpc_opt=paths=source_relative \
|
|
--proto_path=.
|
|
verify_build "$OUT_NEW" "new"
|
|
|
|
# Diff old vs new (exclude go.mod / go.sum)
|
|
echo ""
|
|
echo ">>> Diff (old vs new):"
|
|
if diff -rq --exclude="go.mod" --exclude="go.sum" "$OUT_OLD" "$OUT_NEW" > /dev/null 2>&1; then
|
|
echo " [identical] no differences between old and new output"
|
|
else
|
|
diff -r --exclude="go.mod" --exclude="go.sum" "$OUT_OLD" "$OUT_NEW" || true
|
|
fi
|