diff --git a/scripts/refresh-compat.sh b/scripts/refresh-compat.sh index 5a47a3ff..326f97df 100755 --- a/scripts/refresh-compat.sh +++ b/scripts/refresh-compat.sh @@ -1,11 +1,16 @@ #!/bin/bash +set -euo pipefail + +if ! git diff --quiet || ! git diff --cached --quiet; then + echo "Working tree is not clean. Commit or stash changes before running refresh-compat.sh." >&2 + exit 1 +fi git fetch origin main compat git checkout -B compat origin/compat patch_file="$(mktemp)" +trap 'rm -f "$patch_file"' EXIT git diff origin/main -- . ':(exclude)**/go.mod' ':(exclude)**/go.sum' >"$patch_file" -sed -i 's/sonic\./json\./g' "$patch_file" -sed -i 's/"github.com\/bytedance\/sonic"/"encoding\/json"/g' "$patch_file" git checkout -B main origin/main git branch -D compat git checkout -b compat @@ -14,6 +19,8 @@ mapfile -t changed_go_files < <(git diff --name-only -- '*.go') fmt_go_files=() for file in "${changed_go_files[@]}"; do [ -f "$file" ] || continue + sed -i 's/sonic\./json\./g' "$file" + sed -i 's/"github.com\/bytedance\/sonic"/"encoding\/json"/g' "$file" sed -E -i 's/\bsonic[[:space:]]+"encoding\/json"/json "encoding\/json"/g' "$file" fmt_go_files+=("$file") done