Scripts

Un article de OviWiki.

install_addon.sh

Ce script permet d'installer un module dans Ovidentia en utilisant des liens symboliques. Cette méthode permet d'utiliser dans ovidentia un module en cours de développement et pouvant être directement utilisé par un outil de suivi du code source comme git ou cvs.

pour obtenir la liste des paramètres, utiliser ./install_addon.sh --help

#!/bin/bash
 
 
 
 
copyDirectory()
{
	echo -e "${BOLD}Copying${OFF} '${1}'"
	echo -e "     => '${2}'"
	if [ -d "${1}" ]
	then
		if [ -h "${2}" ]
		then
			rm "${2}"
		else 
			rm -R "${2}"
		fi
		cp -vR "${1}" "${2}" | grep addonini
		find "${2}" -name "CVS" -exec rm -R {} \;
	fi
}
 
 
symlinkDirectory()
{
	echo -e "${BOLD}Linking${OFF} '${1}'"
	echo -e "     => '${2}'"
 
 
	if [ -h "${2}" ]
	then
		rm "${2}"
	fi
 
	ln -sf "${1}" "${2}"
}
 
 
removeDirectory()
{
	echo -e "${BOLD}Unlinking${OFF} '${2}'"
 
	if [ -h "${2}" ]
	then
		rm "${2}"
	else
		if [ ! -d "${2}" ]
		then
			echo -e "****** ${BOLD}Directory does not exist${OFF}"
			return
		fi
		rm -R "${2}";
	fi
}
 
 
 
linkDirectory()
{
	if [ "${INSTALL_MODE}" = "copy" ]
	then
		copyDirectory "${1}" "${2}"
		return
	fi
 
	if [ "${INSTALL_MODE}" = "remove" ]
	then
		removeDirectory "${1}" "${2}"
		return
	fi
 
	symlinkDirectory "${1}" "${2}"
}
 
 
 
linkDirectories()
{
	linkDirectory "${addonPath}/${addonName}/${addonSrc}" "${kernelSrc}/${addonName}"
	linkDirectory "${addonPath}/${addonName}/${addonTemplates}" "${kernelTemplates}/${addonName}"
	linkDirectory "${addonPath}/${addonName}/${addonOvml}" "${kernelOvml}/${addonName}"
	linkDirectory "${addonPath}/${addonName}/${addonLang}" "${kernelLang}/${addonName}"
	linkDirectory "${addonPath}/${addonName}/${addonStyles}" "${kernelStyles}/${addonName}"
	linkDirectory "${addonPath}/${addonName}/${addonImages}" "${kernelImages}/${addonName}"
	linkDirectory "${addonPath}/${addonName}/${addonTheme}" "${kernelTheme}/${addonName}"
}
 
 
showUsage()
{
	echo ""
	echo "install_addon.sh" 
	echo "	[-a|--addonpath=path/to/addon/dir] 	(default : ${defaultWorkspace})"
	echo "	[-k|--kernelpath=path/to/kernel/dir] 	(default : ${defaultWorkspace}/ovidentia)"
	echo "	[-s|--skinpath=path/to/skin/dir] 	(default : /var/www/ovhead/skins)"
	echo "	[-m|--mode=(link|copy|remove)]		(default : link)"
	echo " 	addon1 [addon2 ...]"
	echo ""
}
 
listAddons()
{
	echo -e "\nAddons in addons directory:\n"
	cd "${addonPath}"
	 ls  */programs/addonini.php 2> /dev/null | cut -d "/" -f 1
	echo -e "\n";
}
 
 
 
 
if [ -d "${HOME}/sources" ]
then
	defaultWorkspace="${HOME}/sources"
elif [ -d "${HOME}/workspace" ]
then
	defaultWorkspace="${HOME}/workspace"
else
	defaultWorkspace="${HOME}"
fi
 
 
BOLD=$(tput bold)
OFF=$(tput sgr0)
 
 
 
 
 
TEMP=`getopt -o a:k:s:m: --long addonpath:,kernelpath:,skinpath:,mode:,help -- "$@"`
 
if [ $? != 0 ]
then
	showUsage
	echo "Terminating..." >&2
	exit 1
fi
 
eval set -- "$TEMP"
 
while true
do
	case "$1" in
		-a|--addonpath)
			BAB_ADDON_PATH="$2"
			shift 2
			;;
		-k|--kernelpath)
			BAB_KERNEL_PATH="$2"
			shift 2
			;;
		-s|--skinpath)
			BAB_SKIN_PATH="$2"
			shift 2
			;;
		-m|--mode)
			INSTALL_MODE="$2"
			shift 2
			;;
		--help)
			showUsage
			exit 0
			;;
		--)
			shift
			break
			;;
		-*)
			showUsage
			exit 1
			;;
 
	esac
done
 
 
 
 
 
 
addonPath="${BAB_ADDON_PATH:-${defaultWorkspace}}"
kernelPath="${BAB_KERNEL_PATH:-${defaultWorkspace}/ovidentia}"
skinPath="${BAB_SKIN_PATH:-/var/www/ovhead/skins}"
 
if [ ! -d "${addonPath}" ]
then
	echo "${BOLD}Addonpath '${addonPath}' does not exists${OFF}"
	exit 1
fi	
 
if [ ! -d "${kernelPath}" ]
then
	echo "${BOLD}kernelPath '${kernelPath}' does not exists${OFF}"
	exit 1
fi
 
 
 
echo "Addon path: ${BOLD}${addonPath}${OFF}"
echo "Kernel path: ${BOLD}${kernelPath}${OFF}"
echo "Skins path: ${BOLD}${skinPath}${OFF}"
 
addonSrc="programs"
addonImages="skins/ovidentia/images"
addonTemplates="skins/ovidentia/templates"
addonOvml="skins/ovidentia/ovml"
addonStyles="styles"
addonLang="langfiles"
addonTheme="theme"
 
kernelRoot="${kernelPath}"
kernelSrc="${kernelPath}/addons"
kernelImages="${kernelPath}/${addonImages}/addons"
kernelTemplates="${kernelPath}/${addonTemplates}/addons"
kernelOvml="${kernelPath}/${addonOvml}/addons"
kernelStyles="${kernelPath}/${addonStyles}/addons"
kernelLang="${kernelPath}/lang/addons"
kernelTheme="${skinPath}"
 
 
 
for addonName
do
	addonRoot="${addonPath}/${addonName}"
	if [ ! -d "${addonRoot}" ]
	then
		echo "${BOLD}Addon '${addonName}' not present in ${addonPath}${OFF}"
		listAddons
		exit 1
	fi	
done
 
 
for addonName
do
	if [ "${INSTALL_MODE}" = "remove" ]
	then
		echo "${BOLD}Removing addon '${addonName}'${OFF}"
	else
		echo "${BOLD}Installing addon '${addonName}'${OFF}"	
	fi
 
	addonRoot="${addonPath}/${addonName}"
 
	linkDirectories
done