.ifndef MAKETOPDIR
.MAKEFLAGS: MAKETOPDIR=${.CURDIR:H:H:H}
.endif
.include "${MAKETOPDIR}/Makefile.inc"

.if defined(FREEBSD) || defined(DARWIN)
PERLENVS := PERL5LIB=${PERLDIST}/${PERLSITELIB}
.endif

PMM_DIR= /PMM
PMM_AGENTS_DIR= ${PMM_DIR}/agents

# agents

AGENTS= Cgp ConfixxX cPanel9 EnsimX RaQ2 RaQ3 RaQ4 RaQ550 Slash HsphereX \
	 Plesk13 AlabanzaX generic generic-mail generic-web 

AGENTS_COMMON= PleskX 

PMM_AGENTS_SED_ENV= -e "s|@@MAJOR_VERSION@@|${MAJOR_VERSION}|g"
PMM_AGENTS_SED_ENV+= -e "s|@@MINOR_VERSION@@|${MINOR_VERSION}|g"
PMM_AGENTS_SED_ENV+= -e "s|@@PATCH_VERSION@@|${PATCH_VERSION}|g"

all: install

PleskX.tar:
	mkdir -p ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/tmp
	cp -RL ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/PleskX/* ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/tmp
	cp -RL ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/shared/* ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/tmp
	${TAR} cf PleskX.tar -C ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/tmp .
	cp PleskX.tar ${RELEASEDIR}/backup-agent-${PRODVERSION}.tar
	rm -rf ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/tmp

install: install-pmm install-agents PleskX.tar

install-pmm:

	${INSTALL_PLESK_DIR} ${BACKUP_MANAGER_DIST}${PMM_DIR}
	${INSTALL_PLESK_DIR} ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}

	${INSTALL_PLESK_DIR} ${PMMDIST}${PMM_DIR}
	${INSTALL_PLESK_DIR} ${PMMDIST}${PMM_AGENTS_DIR}

	for i in shared ${AGENTS_COMMON}; do cp -RL $$i ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}; done

	for i in shared ${AGENTS_COMMON}; do \
		find ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/$$i -type d -name .svn | xargs rm -rf; \
	done
# recursive applying sed to the .in files
	for i in shared ${AGENTS_COMMON}; do \
		find ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/$$i -follow -type f -name '*.in' | while read j; do \
			sed ${PMM_AGENTS_SED_ENV} $$j > $${j%.in}; \
			rm $$j; \
		done; \
	done

	${INSTALL_PLESK_SCRIPT} ../scout.pl.in ${PMMDIST}${PMM_DIR}
	sed ${PMM_AGENTS_SED_ENV} ${PMMDIST}${PMM_DIR}/scout.pl.in > ${PMMDIST}${PMM_DIR}/scout.pl
	chmod +x ${PMMDIST}${PMM_DIR}/scout.pl
	rm ${PMMDIST}${PMM_DIR}/scout.pl.in

.if !defined(DEMO)
# getting EntryPoint from spec and checking for syntax errors
	for i in ${AGENTS_COMMON}; do \
	    rm -rf ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/tmp; \
		mkdir ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/tmp; \
		cp -RL ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/$$i/* ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/tmp; \
		cp -RL ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/shared/* ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/tmp; \
		cd ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/tmp; \
		if [ -f control/spec ]; then \
			(${PERLENVS} perl -c `perl -ne "if (/^EntryPoint:\s+(.*)$$/) { print \\$$1; } " control/spec`) || exit 1; \
		fi; \
		cd ${MAKETOPDIR}/plesk-utils/PMM/agents; \
	    rm -rf ${BACKUP_MANAGER_DIST}${PMM_AGENTS_DIR}/tmp; \
	done
.endif


install-agents:
	${INSTALL_PLESK_DIR} ${PMM_AGENTS_DIST}${PMM_DIR}
	${INSTALL_PLESK_DIR} ${PMM_AGENTS_DIST}${PMM_AGENTS_DIR}

	for i in ${AGENTS}; do cp -RL $$i ${PMM_AGENTS_DIST}${PMM_AGENTS_DIR}; done

	for i in ${AGENTS}; do \
		find ${PMM_AGENTS_DIST}${PMM_AGENTS_DIR}/$$i -type d -name .svn | xargs rm -rf; \
	done
# recursive applying sed to the .in files
	for i in ${AGENTS}; do \
		find ${PMM_AGENTS_DIST}${PMM_AGENTS_DIR}/$$i -follow -type f -name '*.in' | while read j; do \
			sed ${PMM_AGENTS_SED_ENV} $$j > $${j%.in}; \
			rm $$j; \
		done; \
	done

.if !defined(DEMO)
# getting EntryPoint from spec and checking for syntax errors
	for i in ${AGENTS}; do \
	    rm -rf ${PMM_AGENTS_DIST}${PMM_AGENTS_DIR}/tmp; \
		mkdir ${PMM_AGENTS_DIST}${PMM_AGENTS_DIR}/tmp; \
		cp -RL ${PMM_AGENTS_DIST}${PMM_AGENTS_DIR}/$$i/* ${PMM_AGENTS_DIST}${PMM_AGENTS_DIR}/tmp; \
		cp -RL shared/* ${PMM_AGENTS_DIST}${PMM_AGENTS_DIR}/tmp; \
		cd ${PMM_AGENTS_DIST}${PMM_AGENTS_DIR}/tmp; \
		if [ -f control/spec ]; then \
			(${PERLENVS} perl -c `perl -ne "if (/^EntryPoint:\s+(.*)$$/) { print \\$$1; } " control/spec`) || exit 1; \
		fi; \
		cd ${MAKETOPDIR}/plesk-utils/PMM/agents; \
	    rm -rf ${PMM_AGENTS_DIST}${PMM_AGENTS_DIR}/tmp; \
	done
.endif

clean:
	rm -f PleskX.tar
