#!/bin/bash

# Simple script to work around the limitations of svn diff.
# This will perform the svn moves and deletes etc in the WC.

#
# Functions
#
move_to_theme_dir ()
{
  local THEME_DIR="$1"
  local FILES_DEFAULT="$2"
  local FILES_DEFAULT_WIDE="$3"
  local FILES_MENUS="$4"
  
  for file in $FILES_DEFAULT
  do
    if [ -e $file ]; then
      svn move ${file} ${THEME_DIR}/default
    else
      echo "WARNING: Unable to locate $file"
    fi
  done

  for file in $FILES_DEFAULT_WIDE
  do
    if [ -e $file ]; then
      svn move ${file} ${THEME_DIR}/default-wide
    else
      echo "WARNING: Unable to locate $file"
    fi
  done

  for file in $FILES_MENUS
  do
    if [ -e $file ]; then
      svn move ${file} ${THEME_DIR}/menus
    else
      echo "WARNING: Unable to locate $file"
    fi
  done
}

if [ $# -ne "0" ]; then
  echo "ERROR: Not expecting any arguements!"
  exit 1
fi

#
# Check we have the expected directory structure
#
START_DIR=`pwd`
HOME_DIR=`dirname ${0}`

# Check for home dir
if [ -d ${HOME_DIR} ]; then
  cd ${HOME_DIR}
  HOME_DIR=`pwd`
  cd ${START_DIR}
else
  echo "ERROR: unexpected error!"
  exit 1
fi

# Check for trunk dir
if [ -d "${HOME_DIR}/../trunk" ]; then
  cd "${HOME_DIR}/../trunk"
  MYTHTV_SRC=`pwd`
  cd ${START_DIR}
else
  echo "ERROR: Can't find trunk dir!"
  exit 1
fi

# Check for mythtv dir
if [ ! -d ${MYTHTV_SRC}/mythtv ]; then
  echo "ERROR: Can't find '${MYTHTV_SRC}/mythtv' directory!"
  exit 1
fi

# Check for mythplugins
if [ ! -d ${MYTHTV_SRC}/mythplugins ]; then
  echo "ERROR: Can't find '${MYTHTV_SRC}/mythplugins' directory!"
  exit 1
fi


#
# Test for svn WC
#
svn info ${MYTHTV_SRC} > /dev/null 2>&1
if [ $? -ne "0" ]; then
  echo "Expecting a svn working copy"
  exit 1
fi


#
# Select plugin to modify
#
echo "" 

PS3='Select plugin to update: '
select SELECTED_PLUGIN in "Cancel" "mythappearance" "mytharchive" "mythbrowser" "mythcontrols" "mythflix" "mythgallery" "mythgame" "mythmovies" "mythmusic" "mythnews" "mythphone" "mythweather" "mythzoneminder"
do
    if [ "$SELECTED_PLUGIN" == "Cancel" ]; then
        echo -e "\nCancel selected!\n"
        exit
    elif [ -n "$SELECTED_PLUGIN" ]; then
       break
    fi
done


#
# Mythappearance
#
if [ ${SELECTED_PLUGIN} == "mythappearance" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHAPPEARANCE_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythappearance/mythappearance/images -name '*.png'`
MYTHAPPEARANCE_DEFAULT="${MYTHAPPEARANCE_DEFAULT} ${MYTHTV_SRC}/mythplugins/mythappearance/mythappearance/appear-ui.xml"

MYTHAPPEARANCE_DEFAULT_WIDE="${MYTHTV_SRC}/mythplugins/mythappearance/mythappearance/theme-wide/appear-ui.xml"

MYTHAPPEARANCE_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythappearance/theme" "$MYTHAPPEARANCE_DEFAULT" "$MYTHAPPEARANCE_DEFAULT_WIDE" "$MYTHAPPEARANCE_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythappearance/mythappearance/images"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythappearance/mythappearance/theme-wide"
fi

#
# Mytharchive
#
if [ ${SELECTED_PLUGIN} == "mytharchive" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHARCHIVE_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mytharchive/images -name '*.png'`
MYTHARCHIVE_DEFAULT="$MYTHARCHIVE_DEFAULT ${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/mytharchive-ui.xml"
MYTHARCHIVE_DEFAULT="$MYTHARCHIVE_DEFAULT ${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/mythburn-ui.xml"
MYTHARCHIVE_DEFAULT="$MYTHARCHIVE_DEFAULT ${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/mythnative-ui.xml"

MYTHARCHIVE_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/mytharchive-ui.xml"
MYTHARCHIVE_DEFAULT_WIDE="$MYTHARCHIVE_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/mythburn-ui.xml"
MYTHARCHIVE_DEFAULT_WIDE="$MYTHARCHIVE_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/mythnative-ui.xml"

MYTHARCHIVE_MENUS="${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/archivemenu.xml"
MYTHARCHIVE_MENUS="$MYTHARCHIVE_MENUS ${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/archiveformat.xml"
MYTHARCHIVE_MENUS="$MYTHARCHIVE_MENUS ${MYTHTV_SRC}/mythplugins/mytharchive/mytharchive/archiveutils.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mytharchive/theme" "$MYTHARCHIVE_DEFAULT" "$MYTHARCHIVE_DEFAULT_WIDE" "$MYTHARCHIVE_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mytharchive/images"
fi


#
# Mythbrowser
#
if [ ${SELECTED_PLUGIN} == "mythbrowser" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHBROWSER_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythbrowser/mythbrowser/images -name '*.png'`

MYTHBROWSER_DEFAULT_WIDE=""

MYTHBROWSER_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythbrowser/theme" "$MYTHBROWSER_DEFAULT" "$MYTHBROWSER_DEFAULT_WIDE" "$MYTHBROWSER_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythbrowser/mythbrowser/images"
fi


#
# Mythcontrols
#
if [ ${SELECTED_PLUGIN} == "mythcontrols" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHCONTROLS_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythcontrols/images -name '*.png'`
MYTHCONTROLS_DEFAULT="$MYTHCONTROLS_DEFAULT ${MYTHTV_SRC}/mythplugins/mythcontrols/mythcontrols/controls-ui.xml"

MYTHCONTROLS_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/controls-ui.xml"

MYTHCONTROLS_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythcontrols/theme" "$MYTHCONTROLS_DEFAULT" "$MYTHCONTROLS_DEFAULT_WIDE" "$MYTHCONTROLS_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythcontrols/images"
fi


#
# Mythflix
#
if [ ${SELECTED_PLUGIN} == "mythflix" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHFLIX_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythflix/mythflix/images -name '*.png'`
MYTHFLIX_DEFAULT="$MYTHFLIX_DEFAULT ${MYTHTV_SRC}/mythplugins/mythflix/mythflix/netflix-ui.xml"

MYTHFLIX_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/netflix-ui.xml"
MYTHFLIX_DEFAULT_WIDE="$MYTHFLIX_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/netflix-bg.png"

MYTHFLIX_MENUS="${MYTHTV_SRC}/mythplugins/mythflix/mythflix/netflix_menu.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythflix/theme" "$MYTHFLIX_DEFAULT" "$MYTHFLIX_DEFAULT_WIDE" "$MYTHFLIX_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythflix/mythflix/images"
fi


#
# Mythgallery
#
if [ ${SELECTED_PLUGIN} == "mythgallery" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHGALLERY_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythgallery/mythgallery/images -name '*.png'`
MYTHGALLERY_DEFAULT="$MYTHGALLERY_DEFAULT ${MYTHTV_SRC}/mythplugins/mythgallery/mythgallery/gallery-ui.xml"

MYTHGALLERY_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/gallery-ui.xml"

MYTHGALLERY_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythgallery/theme" "$MYTHGALLERY_DEFAULT" "$MYTHGALLERY_DEFAULT_WIDE" "$MYTHGALLERY_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythgallery/mythgallery/images"
fi


#
# Mythgame
#
if [ ${SELECTED_PLUGIN} == "mythgame" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHGAME_DEFAULT="${MYTHTV_SRC}/mythplugins/mythgame/mythgame/game-ui.xml"

MYTHGAME_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/game-ui.xml"

MYTHGAME_MENUS="${MYTHTV_SRC}/mythplugins/mythgame/mythgame/game_settings.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythgame/theme" "$MYTHGAME_DEFAULT" "$MYTHGAME_DEFAULT_WIDE" "$MYTHGAME_MENUS"
fi


#
# Mythmovies
#
if [ ${SELECTED_PLUGIN} == "mythmovies" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHMOVIES_DEFAULT="${MYTHTV_SRC}/mythplugins/mythmovies/mythmovies/movies-ui.xml"

MYTHMOVIES_DEFAULT_WIDE="${MYTHTV_SRC}/mythplugins/mythmovies/mythmovies/theme-wide/movies-ui.xml"

MYTHMOVIES_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythmovies/theme" "$MYTHMOVIES_DEFAULT" "$MYTHMOVIES_DEFAULT_WIDE" "$MYTHMOVIES_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythmovies/mythmovies/theme-wide"
fi


#
# Mythmusic
#
if [ ${SELECTED_PLUGIN} == "mythmusic" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHMUSIC_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythmusic/mythmusic/images -name '*.png'`
MYTHMUSIC_DEFAULT="$MYTHMUSIC_DEFAULT ${MYTHTV_SRC}/mythplugins/mythmusic/mythmusic/music-ui.xml"

MYTHMUSIC_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/music-ui.xml"
MYTHMUSIC_DEFAULT_WIDE="$MYTHMUSIC_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/mm_blackhole_border.png"
MYTHMUSIC_DEFAULT_WIDE="$MYTHMUSIC_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/mm_volume_background.png"
MYTHMUSIC_DEFAULT_WIDE="$MYTHMUSIC_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/mm_waiting.png"
MYTHMUSIC_DEFAULT_WIDE="$MYTHMUSIC_DEFAULT_WIDE ${MYTHTV_SRC}/mythtv/themes/default-wide/music-sel-bg.png"

MYTHMUSIC_MENUS="${MYTHTV_SRC}/mythplugins/mythmusic/mythmusic/musicmenu.xml"
MYTHMUSIC_MENUS="$MYTHMUSIC_MENUS ${MYTHTV_SRC}/mythplugins/mythmusic/mythmusic/music_settings.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythmusic/theme" "$MYTHMUSIC_DEFAULT" "$MYTHMUSIC_DEFAULT_WIDE" "$MYTHMUSIC_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythmusic/mythmusic/images"
fi


#
# Mythnews
#
if [ ${SELECTED_PLUGIN} == "mythnews" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHNEWS_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythnews/mythnews/images -name '*.png'`
MYTHNEWS_DEFAULT="$MYTHNEWS_DEFAULT ${MYTHTV_SRC}/mythplugins/mythnews/mythnews/news-ui.xml"

MYTHNEWS_DEFAULT_WIDE="${MYTHTV_SRC}/mythtv/themes/default-wide/news-ui.xml"

MYTHNEWS_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythnews/theme" "$MYTHNEWS_DEFAULT" "$MYTHNEWS_DEFAULT_WIDE" "$MYTHNEWS_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythnews/mythnews/images"
fi


#
# Mythphone
#
if [ ${SELECTED_PLUGIN} == "mythphone" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHPHONE_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythphone/mythphone/images -name '*.png'`
MYTHPHONE_DEFAULT="$MYTHPHONE_DEFAULT ${MYTHTV_SRC}/mythplugins/mythphone/mythphone/phone-ui.xml"
MYTHPHONE_DEFAULT="$MYTHPHONE_DEFAULT ${MYTHTV_SRC}/mythplugins/mythphone/mythphone/webcam-ui.xml"

MYTHPHONE_DEFAULT_WIDE=""

MYTHPHONE_MENUS=""

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythphone/theme" "$MYTHPHONE_DEFAULT" "$MYTHPHONE_DEFAULT_WIDE" "$MYTHPHONE_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythphone/mythphone/images"
fi


#
# Mythweather
#
if [ ${SELECTED_PLUGIN} == "mythweather" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHWEATHER_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/images -name '*.png'`
MYTHWEATHER_DEFAULT="$MYTHWEATHER_DEFAULT ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/weather-ui.xml"

MYTHWEATHER_DEFAULT_WIDE=`find ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/theme-wide/images -name '*.png'`
MYTHWEATHER_DEFAULT_WIDE="$MYTHWEATHER_DEFAULT_WIDE ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/theme-wide/weather-ui.xml"

MYTHWEATHER_MENUS="${MYTHTV_SRC}/mythplugins/mythweather/mythweather/weather_settings.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythweather/theme" "$MYTHWEATHER_DEFAULT" "$MYTHWEATHER_DEFAULT_WIDE" "$MYTHWEATHER_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/images ${MYTHTV_SRC}/mythplugins/mythweather/mythweather/theme-wide"
fi


#
# Mythzoneminder
#
if [ ${SELECTED_PLUGIN} == "mythzoneminder" ]; then
echo -e "\n### Updating ${SELECTED_PLUGIN}"
patch -d ${MYTHTV_SRC} -p0 < "${HOME_DIR}/${SELECTED_PLUGIN}.diff"
cp -r ${HOME_DIR}/theme ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}
svn add ${MYTHTV_SRC}/mythplugins/${SELECTED_PLUGIN}/theme

MYTHZONEMINDER_DEFAULT=`find ${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/images -name '*.png'`
MYTHZONEMINDER_DEFAULT="$MYTHZONEMINDER_DEFAULT ${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/zoneminder-ui.xml"

MYTHZONEMINDER_DEFAULT_WIDE="${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/theme-wide/zoneminder-ui.xml"

MYTHZONEMINDER_MENUS="${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/zonemindermenu.xml"

move_to_theme_dir "${MYTHTV_SRC}/mythplugins/mythzoneminder/theme" "$MYTHZONEMINDER_DEFAULT" "$MYTHZONEMINDER_DEFAULT_WIDE" "$MYTHZONEMINDER_MENUS"
SVN_RM_LIST="$SVN_RM_LIST ${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/images ${MYTHTV_SRC}/mythplugins/mythzoneminder/mythzoneminder/theme-wide"
fi


#
# Remove empty dirs
#
echo -e "\n### Removing empty dirs"
for dir in $SVN_RM_LIST
do
  if [ -e $dir ]; then
    svn rm $dir
  else
    echo "WARNING: Can't find '${dir}' to delete."
  fi
done

