mirror of
https://github.com/awesome-jellyfin/awesome-jellyfin
synced 2024-11-22 02:53:04 +00:00
87 lines
3.1 KiB
Bash
87 lines
3.1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Check if a GitHub API token is provided
|
||
|
if [ "$#" -ne 2 ] || [ "$1" != "-api" ]; then
|
||
|
echo -e "${RED}Usage:>${NOCOLOR} $0 -api <github-api-token>"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
API_TOKEN=$2
|
||
|
API_HEADER="Authorization: token $API_TOKEN"
|
||
|
README_PATH="../README.md"
|
||
|
SIX_MONTHS=$(date -d "6 months ago" +%s)
|
||
|
PROPOSED_CHANGES=()
|
||
|
|
||
|
# Color codes for console output
|
||
|
GREEN='\033[0;32m'
|
||
|
RED='\033[0;31m'
|
||
|
YELLOW='\033[1;33m'
|
||
|
NOCOLOR='\033[0m'
|
||
|
|
||
|
# Check if README.md exists
|
||
|
if [ ! -f "$README_PATH" ]; then
|
||
|
echo -e "${RED}README.md not found in path:${NOCOLOR} $README_PATH"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Parse README.md and collect information
|
||
|
while IFS= read -r line; do
|
||
|
original_text=$(echo "$line" | sed -E 's/^- \[([^]]+)\].*/\1/')
|
||
|
text=$(echo "$original_text" | sed -E 's/ `[^`]+`//g') # Remove existing indicators
|
||
|
url=$(echo "$line" | sed -E 's/.*\]\(([^)]+)\).*/\1/')
|
||
|
|
||
|
if [[ $url == https://github.com* ]]; then
|
||
|
repo_path=$(echo $url | cut -d/ -f4-5)
|
||
|
response=$(curl -s -H "$API_HEADER" "https://api.github.com/repos/$repo_path")
|
||
|
|
||
|
# Fetch additional details for forked repositories
|
||
|
is_fork=$(echo $response | grep '"fork": true')
|
||
|
if [ ! -z "$is_fork" ]; then
|
||
|
parent_repo=$(echo $response | grep '"parent":' | grep -o '"full_name": "[^"]*"' | cut -d '"' -f 4)
|
||
|
if [ ! -z "$parent_repo" ]; then
|
||
|
parent_response=$(curl -s -H "$API_HEADER" "https://api.github.com/repos/$parent_repo")
|
||
|
response=$parent_response
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
# Get the latest commit date
|
||
|
commits_url=$(echo $response | grep '"commits_url":' | sed -E 's/.*"commits_url": "([^"]+)".*/\1/')
|
||
|
commits_url="${commits_url/\{\/sha\}/}"
|
||
|
latest_commit=$(curl -s -H "$API_HEADER" "${commits_url}?per_page=1")
|
||
|
last_commit_date=$(echo $latest_commit | grep '"date":' | head -1 | sed -E 's/.*"date": "([^"]+)".*/\1/' | cut -c 1-10)
|
||
|
last_commit_sec=$(date -d "$last_commit_date" +%s)
|
||
|
|
||
|
# Compare with six months ago
|
||
|
if [[ $last_commit_sec -lt $SIX_MONTHS && ! $original_text == *📅* ]]; then
|
||
|
PROPOSED_CHANGES+=("$original_text - Date: $last_commit_date - URL: $url")
|
||
|
fi
|
||
|
fi
|
||
|
done < <(grep '^-\ \[' "$README_PATH")
|
||
|
|
||
|
# Display proposed changes separately
|
||
|
echo -e "${YELLOW}Proposed Changes:${NOCOLOR}"
|
||
|
if [ ${#PROPOSED_CHANGES[@]} -eq 0 ]; then
|
||
|
echo -e "${GREEN}No changes required.${NOCOLOR}"
|
||
|
else
|
||
|
for change in "${PROPOSED_CHANGES[@]}"; do
|
||
|
echo "$change"
|
||
|
done
|
||
|
|
||
|
# Ask for user confirmation
|
||
|
echo -e "${YELLOW}Would you like to apply these changes?${NOCOLOR} (y/n)"
|
||
|
read -r user_input
|
||
|
|
||
|
if [[ $user_input == "y" ]]; then
|
||
|
# Apply the changes
|
||
|
for change in "${PROPOSED_CHANGES[@]}"; do
|
||
|
text=$(echo "$change" | sed -E 's/ - Date:.*//') # Extract text without date and URL
|
||
|
if ! grep -q "\[$text \`📅\`\]" "$README_PATH"; then
|
||
|
sed -i "s|-\ \[$text\]|- \[$text \`📅\`]|" "$README_PATH"
|
||
|
fi
|
||
|
done
|
||
|
echo -e "${GREEN}README.md has been updated.${NOCOLOR}"
|
||
|
else
|
||
|
echo -e "${RED}Changes were declined.${NOCOLOR}"
|
||
|
fi
|
||
|
fi
|