Update .gitea/actions/test-links/action.yml
This commit is contained in:
@@ -59,12 +59,19 @@ runs:
|
||||
while IFS= read -r link; do
|
||||
[ -z "$link" ] && continue
|
||||
|
||||
# Decode URL-encoded characters
|
||||
decoded_link=$(echo "$link" | sed 's/%20/ /g' | sed 's/%23/#/g' | sed 's/%28/(/g' | sed 's/%29/)/g' | sed 's/%E2%80%A2/•/g' | sed 's/%E1%9A%96/ᚖ/g' | sed 's/%E3%80%8A/《/g' | sed 's/%E3%80%8B/》/g' | sed 's/%E3%80%8E/『/g' | sed 's/%E3%80%8F/』/g' | sed 's/%E2%9B%94/⛔/g' | sed 's/%E2%9C%A8/✨/g' | sed 's/%7B/{/g' | sed 's/%7D/}/g' | sed 's/%2B/+/g' | sed 's/%E3%83%86/テ/g' | sed 's/%E3%83%B3/ン/g' | sed 's/%E3%83%8D/ネ/g' | sed 's/%E3%82%B9/ス/g' | sed 's/%E3%82%A4/イ/g' | sed 's/%E3%83%BB/・/g' | sed 's/%E3%83%95/フ/g' | sed 's/%E3%83%AA/リ/g' | sed 's/%E3%83%BC/ー/g' | sed 's/%E3%83%8A/ナ/g' | sed 's/%5B/[/g' | sed 's/%5D/]/g')
|
||||
# Decode URL-encoded characters for display
|
||||
decoded_link=$(echo "$link" | sed 's/%20/ /g' | sed 's/%23/#/g' | sed 's/%28/(/g' | sed 's/%29/)/g' | sed 's/%E2%80%A2/•/g' | sed 's/%E1%9A%96/ᚖ/g' | sed 's/%E3%80%8A/《/g' | sed 's/%E3%80%8B/》/g' | sed 's/%E3%80%8E/『/g' | sed 's/%E3%80%8F/』/g' | sed 's/%E2%9B%94/⛔/g' | sed 's/%E2%9C%A8/✨/g' | sed 's/%7B/{/g' | sed 's/%7D/}/g' | sed 's/%2B/+/g' | sed 's/%E3%83%86/テ/g' | sed 's/%E3%83%B3/ン/g' | sed 's/%E3%83%8D/ネ/g' | sed 's/%E3%82%B9/ス/g' | sed 's/%E3%82%A4/イ/g' | sed 's/%E3%83%BB/・/g' | sed 's/%E3%83%95/フ/g' | sed 's/%E3%83%AA/リ/g' | sed 's/%E3%83%BC/ー/g' | sed 's/%E3%83%8A/ナ/g' | sed 's/%5B/[/g' | sed 's/%5D/]/g' | sed 's/%2C/,/g')
|
||||
|
||||
# Determine link category and validation status
|
||||
status="✓"
|
||||
|
||||
# Get repository info from git remote (once)
|
||||
if [ -z "$REPO_OWNER" ]; then
|
||||
REPO_OWNER=$(git config --get remote.origin.url | sed -n 's|.*[:/]\([^/]*\)/[^/]*\.git|\1|p' || echo "")
|
||||
REPO_NAME=$(git config --get remote.origin.url | sed -n 's|.*[:/][^/]*/\([^/]*\)\.git|\1|p' || echo "")
|
||||
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "main")
|
||||
fi
|
||||
|
||||
# Check if it's an external URL
|
||||
if [[ "$decoded_link" =~ ^https?:// ]]; then
|
||||
# Replace git.sulej.net with internal gitea URL for checking
|
||||
@@ -78,37 +85,10 @@ runs:
|
||||
http_code=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 \
|
||||
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
|
||||
"$check_url" 2>/dev/null || echo "000")
|
||||
|
||||
# Accept 2xx and 3xx status codes as valid
|
||||
if ! [[ "$http_code" =~ ^[23][0-9][0-9]$ ]]; then
|
||||
status="✖ (HTTP $http_code)"
|
||||
file_has_errors=1
|
||||
has_errors=1
|
||||
fi
|
||||
|
||||
# Categorize external URLs
|
||||
if [[ "$decoded_link" =~ /export/.*\.(osk|osz)$ ]]; then
|
||||
echo " $status $decoded_link" >> /tmp/download_$$.txt
|
||||
elif [[ "$decoded_link" =~ /media/gameplay/.*\.(mp4|webm)$ ]]; then
|
||||
echo " $status $decoded_link" >> /tmp/video_$$.txt
|
||||
elif [[ "$decoded_link" =~ /src/tag/ ]]; then
|
||||
echo " $status $decoded_link" >> /tmp/tags_$$.txt
|
||||
elif [[ "$decoded_link" =~ /media/(panel|icons|thumbnail)/ ]]; then
|
||||
echo " $status $decoded_link" >> /tmp/media_$$.txt
|
||||
else
|
||||
echo " $status $decoded_link" >> /tmp/download_$$.txt
|
||||
fi
|
||||
else
|
||||
# Local file - convert to full URL and check via web
|
||||
# Local file - convert to full Gitea URL
|
||||
if [[ "$link" =~ ^/ ]]; then
|
||||
# Absolute path from repo root - convert to full URL
|
||||
if [ -z "$REPO_OWNER" ]; then
|
||||
REPO_OWNER=$(git config --get remote.origin.url | sed -n 's|.*[:/]\([^/]*\)/[^/]*\.git|\1|p' || echo "")
|
||||
REPO_NAME=$(git config --get remote.origin.url | sed -n 's|.*[:/][^/]*/\([^/]*\)\.git|\1|p' || echo "")
|
||||
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "main")
|
||||
fi
|
||||
|
||||
# Build full URL: http://gitea:3000/owner/repo/raw/branch/main/path
|
||||
# Absolute path from repo root
|
||||
check_url="http://gitea:3000/$REPO_OWNER/$REPO_NAME/raw/branch/$GIT_BRANCH${link}"
|
||||
else
|
||||
# Relative path from markdown file
|
||||
@@ -118,35 +98,34 @@ runs:
|
||||
else
|
||||
rel_path="${md_dir#./}/$link"
|
||||
fi
|
||||
|
||||
if [ -z "$REPO_OWNER" ]; then
|
||||
REPO_OWNER=$(git config --get remote.origin.url | sed -n 's|.*[:/]\([^/]*\)/[^/]*\.git|\1|p' || echo "")
|
||||
REPO_NAME=$(git config --get remote.origin.url | sed -n 's|.*[:/][^/]*/\([^/]*\)\.git|\1|p' || echo "")
|
||||
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "main")
|
||||
fi
|
||||
|
||||
# Build full URL for relative path
|
||||
check_url="http://gitea:3000/$REPO_OWNER/$REPO_NAME/raw/branch/$GIT_BRANCH/$rel_path"
|
||||
fi
|
||||
|
||||
# Check URL with curl
|
||||
http_code=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$check_url" 2>/dev/null || echo "000")
|
||||
fi
|
||||
|
||||
# Accept 2xx and 3xx status codes as valid
|
||||
if ! [[ "$http_code" =~ ^[23][0-9][0-9]$ ]]; then
|
||||
status="✖ (not found)"
|
||||
status="✖ (HTTP $http_code)"
|
||||
file_has_errors=1
|
||||
has_errors=1
|
||||
fi
|
||||
|
||||
# Categorize local files
|
||||
if [[ "$decoded_link" =~ \.(webp|png|jpg|jpeg)$ ]]; then
|
||||
# Categorize all links
|
||||
if [[ "$decoded_link" =~ /export/.*\.(osk|osz)$ ]] || [[ "$decoded_link" =~ ^https?:// && ! "$decoded_link" =~ /media/ && ! "$decoded_link" =~ /src/tag/ ]]; then
|
||||
echo " $status $decoded_link" >> /tmp/download_$$.txt
|
||||
elif [[ "$decoded_link" =~ /media/gameplay/.*\.(mp4|webm)$ ]]; then
|
||||
echo " $status $decoded_link" >> /tmp/video_$$.txt
|
||||
elif [[ "$decoded_link" =~ /src/tag/ ]]; then
|
||||
echo " $status $decoded_link" >> /tmp/tags_$$.txt
|
||||
elif [[ "$decoded_link" =~ \.(webp|png|jpg|jpeg)$ ]] || [[ "$decoded_link" =~ /media/(panel|icons|thumbnail)/ ]]; then
|
||||
echo " $status $decoded_link" >> /tmp/media_$$.txt
|
||||
elif [[ "$decoded_link" =~ \.md$ ]]; then
|
||||
echo " $status $decoded_link" >> /tmp/tags_$$.txt
|
||||
else
|
||||
echo " $status $decoded_link" >> /tmp/download_$$.txt
|
||||
fi
|
||||
fi
|
||||
done < /tmp/links_$$.txt
|
||||
|
||||
# Display categorized results - special handling for README
|
||||
|
||||
Reference in New Issue
Block a user