#!/bin/bash

source automation_tools/version_extractor.sh

# Fetch appdata version
appdata_version=$(fetch_appdata_version)
echo -e "Appdata:\t\t$appdata_version"

# Defining manifest file location
appdata_file="net.retrodeck.retrodeck.appdata.xml"

# Check if release with appdata_version already exists
if grep -q "version=\"$appdata_version\"" "$appdata_file"; then
    echo "Deleting existing release version $appdata_version..."
    
    # Remove the existing release entry
    sed -i "/<release version=\"$appdata_version\"/,/<\/release>/d" "$appdata_file"
fi

echo "Adding new release version $appdata_version..."

# Get today's date in the required format (YYYY-MM-DD)
today_date=$(date +"%Y-%m-%d")
echo "Today is $today_date"

# Construct the release snippet
release_snippet="\
<releases>
        <release version=\"$appdata_version\" date=\"$today_date\">
            <url>https://github.com/XargonWan/RetroDECK/releases/tag/$appdata_version</url>
            <description>
                RELEASE_NOTES_PLACEHOLDER
            </description>
        </release>"

# Read the entire content of the XML file
xml_content=$(cat "$appdata_file")

# Replace RELEASE_NOTES_PLACEHOLDER with the actual release notes
# TODO
git clone https://github.com/XargonWan/RetroDECK.wiki.git /tmp/wiki

# Path to the markdown file
wiki="/tmp/wiki/Version-history:-Patch-Notes.md"
# Read the markdown file until the first occurrence of "---"
latest_version_notes=""
while IFS= read -r line; do
    if [ "$line" = "---" ]; then
        break
    fi
    latest_version_notes+="$line\n"
done < "$wiki"

# Extract the version number
version_number="${latest_version_notes#*# RetroDECK }"  # Remove text before "# RetroDECK "
version_number="${version_number%% -*}"                # Remove text after " - "

# Extract sections from the latest version notes
sections=$(echo "$latest_version_notes" | awk '/##/ { print; }')

# # Create a formatted section list
# section_list=""
# current_section=""
# while IFS= read -r line; do
#     if [[ "$line" == "##"* ]]; then
#         if [ -n "$current_section" ]; then
#             section_list+="</ul>"
#         fi
#         section_name="${line##*# }"
#         section_list+="<p>${section_name}</p><ul>"
#     elif [[ "$line" == "- "* ]]; then
#         entry="${line#*- }"
#         section_list+="<li>${entry}</li>"
#     fi
# done <<< "$sections"

# if [ -n "$current_section" ]; then
#     section_list+="</ul>"
# fi

altered_sections=""
current_section=""
in_list=0

IFS=$'\n'
for line in $sections; do
    if [[ $line =~ ^##\ (.+) ]]; then
        if [ -n "$current_section" ]; then
            if [ $in_list -eq 1 ]; then
                altered_sections+="</ul>\n"
                in_list=0
            fi
            altered_sections+="</ul>\n"
        fi
        current_section="${BASH_REMATCH[1]}"
        altered_sections+="<p>$current_section</p>\n<ul>\n"
    elif [[ $line =~ ^-\ (.+) ]]; then
        if [ $in_list -eq 0 ]; then
            in_list=1
            altered_sections+="<ul>\n"
        fi
        list_item="${BASH_REMATCH[1]}"
        altered_sections+="<li>$list_item</li>\n"
    elif [ -z "$line" ]; then
        if [ $in_list -eq 1 ]; then
            in_list=0
            altered_sections+="</ul>\n"
        fi
    fi
done
if [ $in_list -eq 1 ]; then
    altered_sections+="</ul>\n"
fi

echo -e "$altered_sections"

# Replace RELEASE_NOTES_PLACEHOLDER with the actual release notes
release_description="${release_snippet/RELEASE_NOTES_PLACEHOLDER/$section_list}"

# Append the new release snippet to the content
modified_xml_content="${xml_content/<releases>/$release_description}"

# Overwrite the original XML file with the modified content
echo "$modified_xml_content" > "$appdata_file"

# Format the XML file
#xmlstarlet fo --omit-decl "$appdata_file"