mirror of
https://github.com/yusing/godoxy.git
synced 2026-02-26 02:35:19 +01:00
56 lines
1.7 KiB
Bash
Executable File
56 lines
1.7 KiB
Bash
Executable File
#!/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 -- ':(glob)**/*.go' >"$patch_file"
|
|
git checkout -B main origin/main
|
|
git branch -D compat
|
|
git checkout -b compat
|
|
git apply "$patch_file"
|
|
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
|
|
if [ "${#fmt_go_files[@]}" -gt 0 ]; then
|
|
gofmt -w "${fmt_go_files[@]}"
|
|
fi
|
|
|
|
# create placeholder files for minified JS files so go vet won't complain
|
|
while IFS= read -r file; do
|
|
ext="${file##*.}"
|
|
base="${file%.*}"
|
|
min_file="${base}-min.${ext}"
|
|
[ -f "$min_file" ] || : >"$min_file"
|
|
done < <(find internal/ -name '*.js' ! -name '*-min.js')
|
|
|
|
docker_version="$(
|
|
git show origin/compat:go.mod |
|
|
sed -n 's/^[[:space:]]*github.com\/docker\/docker[[:space:]]\+\(v[^[:space:]]\+\).*/\1/p' |
|
|
head -n 1
|
|
)"
|
|
if [ -n "$docker_version" ]; then
|
|
go mod edit -droprequire=github.com/docker/docker/api || true
|
|
go mod edit -droprequire=github.com/docker/docker/client || true
|
|
go mod edit -require="github.com/docker/docker@${docker_version}"
|
|
fi
|
|
|
|
go mod tidy
|
|
go mod -C agent tidy
|
|
git add -A
|
|
git commit -m "Apply compat patch"
|
|
go vet ./...
|
|
go vet -C agent ./...
|