#!/bin/bash

echo "$0: START"

set -e

source /usr/share/mediawiki-shell/common

exit_handler() {
   [[ -v retry_counter ]] || retry_counter=0
   if [ "$retry_counter" -gt 1 ]; then
      ## >&2 is correct.
      echo "$0: success after attempt $retry_counter" >&2
   fi
}

trap exit_handler EXIT

do_it() {
   wiki_backup_file="${wiki_backup_folder}/${backup_filename_item}"

   wiki_article_to_fetch="$backup_page_item" \
   wiki_fetch_to_file="$wiki_backup_file" \
   WIKI_URL="$SOURCE_WIKI_URL" \
      mw-fetch

   ## {{{
   ## XXX

  # DESTINATION_WIKI_URL="$WIKI_URL"

   ## bugfix
#    if grep -q "rm -f /home/user/mediawiki-shell" "$wiki_backup_file" ; then
#       ## remove first two lines
#       tail -n +3 "$wiki_backup_file" > "$TMPFOLDER/tmp-fix.txt"
#       diff "$TMPFOLDER/tmp-fix.txt" "$wiki_backup_file"
#       cp "$TMPFOLDER/tmp-fix.txt" "$wiki_backup_file"
#    fi

   ## Remove trailing spaces.
   #sed -i 's/[[:space:]]*$//' "$wiki_backup_file"

   #edit_message="remove-trailing-spaces" \
   #WIKI_URL="$DESTINATION_WIKI_URL" \
      #mw-edit "$backup_page_item" "$wiki_backup_file"

   ## }}}
}

check_vars_exist wiki_backup_folder backup_filename_item backup_page_item SOURCE_WIKI_URL

echo "$0: INFO: wiki_backup_folder: $wiki_backup_folder"

mkdir -p "$wiki_backup_folder"

if ! test -d "$wiki_backup_folder" ; then
   echo "$0: ERROR: wiki_backup_folder '$wiki_backup_folder' does not exist! Run...?:"
   echo "mkdir --parents '$wiki_backup_folder'"
   exit 1
fi

if ! test -w "$wiki_backup_folder" ; then
   echo "$0: ERROR: wiki_backup_folder '$wiki_backup_folder' unwriteable! Run...?:"
   echo "chown --recursive '$USER:$USER' '$wiki_backup_folder'"
   exit 1
fi

for retry_counter in $(seq 1 5) ; do
   if do_it ; then
      ## Success. Exit success.
      exit 0
   fi
   ## Failed. Wait and try again.
   sleep 5
done

## Failed even after retry attempts. Therefore exit non-zero.
exit 1
