#!/bin/bash rcdir="${1}" THEMENAME="gv4alw" THEMEURL="http://andrwe.org/lib/exe/fetch.php/scripting/roundcube/${THEMENAME}/${THEMENAME}.tar.gz" PLUGINURL="http://andrwe.org/lib/exe/fetch.php/scripting/roundcube/${THEMENAME}/${THEMENAME}-plugins.tar.gz" MODPLUGINS='managesieve sieverules' VERBOSE=0 opt="" skip=0 function usage() { echo "This script installs the roundcube theme ${THEMENAME} and its plugins. Just start it using the absolute roundcube install path as argument: $0 /path/to/roundcube-root/ e.g.: $0 /var/www/roundcube/ " } [ $# -ne 1 ] && usage && exit 1 [ ! -d ${rcdir} ] && echo "${rcdir} doesn't exist or isn't a directory." && exit 1 [[ ! ${rcdir} =~ ^/ ]] && echo "Relative path isn't supported. Use absolute path." && usage && exit 1 [ ${VERBOSE} -ne 0 ] && opt="v" echo "Retrieving packages ..." wget -O /tmp/${THEMENAME}.tar.gz "${THEMEURL}" || exit 1 wget -O /tmp/${THEMENAME}-plugins.tar.gz "${PLUGINURL}" || exit 1 echo "Changing directory to ${rcdir}/skins/" cd "${rcdir}/skins/" if [ -d ${THEMENAME} ] then echo "Checking version ..." locver="$(<"${THEMENAME}"/VERSION)" tarver="$(tar xfO${opt} "/tmp/${THEMENAME}.tar.gz" "${THEMENAME}/VERSION")" if [ "${locver}" == "${tarver}" ] then skip=1 echo "Theme is up-to-date. Skipping." fi fi if [ ${skip} -eq 0 ] then echo "Installing ${THEMENAME} ..." rm -rf${opt} "${THEMENAME}" tar xfz${opt} /tmp/${THEMENAME}.tar.gz || exit 1 echo "... theme installed." fi echo "Preparing plugin installation ..." mkdir -p /tmp/${THEMENAME}-plugins cd /tmp/${THEMENAME}-plugins tar xfz${opt} /tmp/${THEMENAME}-plugins.tar.gz echo "... preparation done." echo "Installing plugins ..." for plugindir in * do plugin="$(basename "${plugindir}")" if [ -e "${rcdir}/plugins/${plugin}" ] then echo -n "${plugin}: " locver="$(<"${rcdir}/plugins/${plugin}/skins/${THEMENAME}/VERSION")" tarver="$(<"${plugindir}/skins/${THEMENAME}/VERSION")" if [ "${locver}" != "${tarver}" ] then rm -rf${opt} "${rcdir}/plugins/${plugin}/skins/${THEMENAME}" cp -r${opt} "${plugindir}/skins/" "${rcdir}/plugins/${plugin}/" echo "updated" else echo "up-to-date" fi fi done echo "... installation done." echo "Now installed plugins would be modified to fully support this themes capabilities. For each modification you can choose whether it should be done, default choice is no. All done modifications will be shown." read -p "Should the plugins be modified? (y/N) " modify if [ "${modify}" == "y" -o "${modify}" == "Y" ] then for plugin in ${MODPLUGINS} do [ ! -d "${rcdir}/plugins/${plugin}" ] && continue case ${plugin} in "managesieve") echo "managesieve: public \$task = 'settings' => public \$task = '?(?!login|logout).*'" read -p "Modify? (y/N) " modplugin if [ "${modplugin}" == "y" -o "${modplugin}" == "Y" ] then sed -i 's/public \$task = \(.\)settings|mail|addressbook.;$/public $task = \1?(?!login|logout).*\1;/g' "${rcdir}/plugins/${plugin}/${plugin}.php" echo "managesieve modified" fi ;; "sieverules") echo "sieverules: public \$task = 'settings' => public \$task = '?(?!login|logout).*'" read -p "Modify? (y/N) " modplugin if [ "${modplugin}" == "y" -o "${modplugin}" == "Y" ] then sed -i 's/public \$task = \(.\)settings.;$/public $task = \1?(?!login|logout).*\1;/g' "${rcdir}/plugins/${plugin}/${plugin}.php" echo "sieverules modified" fi ;; esac done fi echo "Cleanup ..." rm -rf${opt} "/tmp/${THEMENAME}"-plugins{,.tar.gz} "/tmp/${THEMENAME}.tar.gz" echo "... cleanup done." echo "Script finished."