mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
82 lines
2.6 KiB
Bash
Executable File
82 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Get the absolute path to the repository root
|
|
repo_root=$(pwd)
|
|
workdir=$repo_root/examples
|
|
|
|
echo "Prepare to process go.mod files in the ${workdir} directory"
|
|
|
|
# Check if examples directory exists
|
|
if [ ! -d "${workdir}" ]; then
|
|
echo "Error: examples directory not found at ${workdir}"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if find command is available
|
|
if ! command -v find &> /dev/null; then
|
|
echo "Error: find command not found!"
|
|
exit 1
|
|
fi
|
|
|
|
for file in `find ${workdir} -name go.mod`; do
|
|
goModPath=$(dirname $file)
|
|
echo ""
|
|
echo "Processing dir: $goModPath"
|
|
|
|
# Calculate relative path to root
|
|
# First get the relative path from go.mod to repo root
|
|
relativePath=""
|
|
current="$goModPath"
|
|
while [ "$current" != "$repo_root" ]; do
|
|
relativePath="../$relativePath"
|
|
current=$(dirname "$current")
|
|
done
|
|
relativePath=${relativePath%/} # Remove trailing slash
|
|
echo "Relative path to root: $relativePath"
|
|
|
|
# Get all github.com/gogf/gf dependencies
|
|
# Use awk to get package names without version numbers
|
|
dependencies=$(awk '/^[[:space:]]*github\.com\/gogf\/gf\// {print $1}' "$file" | sort -u)
|
|
|
|
if [ -n "$dependencies" ]; then
|
|
echo "Found GoFrame dependencies:"
|
|
echo "$dependencies"
|
|
echo "Adding replace directives..."
|
|
|
|
# Create temporary file
|
|
temp_file="${file}.tmp"
|
|
# Remove existing replace directives and copy to temp file
|
|
sed '/^replace.*github\.com\/gogf\/gf.*/d' "$file" > "$temp_file"
|
|
|
|
# Add new replace block
|
|
echo "" >> "$temp_file"
|
|
echo "replace (" >> "$temp_file"
|
|
|
|
while IFS= read -r dep; do
|
|
# Skip empty lines
|
|
[ -z "$dep" ] && continue
|
|
|
|
# Calculate the relative path for the replacement
|
|
if [[ "$dep" == "github.com/gogf/gf/v2" ]]; then
|
|
replacement="$relativePath"
|
|
else
|
|
# Extract the path after v2 and remove trailing version
|
|
subpath=$(echo "$dep" | sed -E 's/github\.com\/gogf\/gf\/(contrib\/[^/]+\/[^/]+)\/v2.*/\1/')
|
|
replacement="$relativePath/$subpath"
|
|
fi
|
|
|
|
echo " $dep => $replacement/" >> "$temp_file"
|
|
done <<< "$dependencies"
|
|
|
|
echo ")" >> "$temp_file"
|
|
|
|
# Replace original file with temporary file
|
|
mv "$temp_file" "$file"
|
|
echo "Replace directives added to $file"
|
|
else
|
|
echo "No GoFrame dependencies found in $file"
|
|
fi
|
|
done
|
|
|
|
echo "\nAll go.mod files have been processed successfully."
|