#!/bin/bash
# BEGIN COPYRIGHT BLOCK
# (C) 2010 Red Hat, Inc.
# All rights reserved.
# END COPYRIGHT BLOCK

##
## Include common 'compose' functions
##

COMPOSE_PWD=`dirname $0`
source ${COMPOSE_PWD}/compose_functions


## Always switch into the base directory three levels
## above this shell script prior to executing it so
## that all of its output is written to this directory

cd `dirname $0`/../..


##
## Retrieve the name of this base directory
##

PKI_PWD=`pwd`


##
## Establish the 'ipa-pki' name and version information
##

IPA_PKI_THEME="ipa-pki-theme"
IPA_PKI_THEME_VERSION="10.2.0"


##
## Establish the SOURCE files/directories of the 'ipa-pki' source directory
##

PKI_SPECS_FILE="${PKI_DIR}/specs/${IPA_PKI_THEME}.spec"
PKI_COMPONENT_LIST="common-ui ca-ui"


##
## Establish the TARGET files/directories of the 'ipa-pki' source/spec files
##

if [ $WORK_DIR ]; then
    PKI_PACKAGES="`cd $WORK_DIR ; pwd`"
else
    PKI_PACKAGES="${PKI_PWD}/packages"
fi

IPA_PKI_THEME_BUILD_DIR="${PKI_PACKAGES}/BUILD"
IPA_PKI_THEME_RPMS_DIR="${PKI_PACKAGES}/RPMS"
IPA_PKI_THEME_SOURCES_DIR="${PKI_PACKAGES}/SOURCES"
IPA_PKI_THEME_SPECS_DIR="${PKI_PACKAGES}/SPECS"
IPA_PKI_THEME_SRPMS_DIR="${PKI_PACKAGES}/SRPMS"

IPA_PKI_THEME_TARBALL="${IPA_PKI_THEME}-${IPA_PKI_THEME_VERSION}.tar.gz"
IPA_PKI_THEME_SPEC_FILE="${IPA_PKI_THEME_SPECS_DIR}/${IPA_PKI_THEME}.spec"
IPA_PKI_THEME_PACKAGE_SCRIPT="${PKI_PACKAGES}/package_${IPA_PKI_THEME}"
IPA_PKI_THEME_PACKAGE_COMMAND="${RPMBUILD_CMD} SPECS/${IPA_PKI_THEME}.spec"

IPA_PKI_THEME_STAGING_DIR="${PKI_PACKAGES}/staging"
IPA_PKI_THEME_DIR="${IPA_PKI_THEME_STAGING_DIR}/${IPA_PKI_THEME}-${IPA_PKI_THEME_VERSION}"
IPA_PKI_THEME_DOGTAG_DIR="${IPA_PKI_THEME_DIR}/dogtag"
IPA_PKI_THEME_DOGTAG_SUBDIR="${IPA_PKI_THEME}-${IPA_PKI_THEME_VERSION}/dogtag"


##
## Always create a top-level 'packages' directory
##

mkdir -p ${PKI_PACKAGES}


##
## Always create 'ipa-pki' package directories
##

mkdir -p ${IPA_PKI_THEME_BUILD_DIR}
mkdir -p ${IPA_PKI_THEME_RPMS_DIR}
mkdir -p ${IPA_PKI_THEME_SOURCES_DIR}
mkdir -p ${IPA_PKI_THEME_SPECS_DIR}
mkdir -p ${IPA_PKI_THEME_SRPMS_DIR}


##
## Always start with new 'ipa-pki' package files
##

rm -rf ${IPA_PKI_THEME_BUILD_DIR}/${IPA_PKI_THEME}-${IPA_PKI_THEME_VERSION}
rm -f  ${IPA_PKI_THEME_RPMS_DIR}/${IPA_PKI_THEME}-${IPA_PKI_THEME_VERSION}*.rpm
rm -f  ${IPA_PKI_THEME_SOURCES_DIR}/${IPA_PKI_THEME_TARBALL}
rm -f  ${IPA_PKI_THEME_SPEC_FILE}
rm -f  ${IPA_PKI_THEME_SRPMS_DIR}/${IPA_PKI_THEME}-${IPA_PKI_THEME_VERSION}*.rpm


##
## Copy a new 'ipa-pki' spec file from the
## current contents of the PKI working repository
##

cp -p ${PKI_SPECS_FILE} ${IPA_PKI_THEME_SPECS_DIR}


##
## If specified, copy all Patches from the spec file URL to SOURCES
##

if [ ${FETCH_PATCH_FILES} -eq 1 ] ; then
	Fetch_Patch_Files ${PKI_SPECS_FILE} ${IPA_PKI_THEME_SOURCES_DIR}
fi


##
## Copy the specified Source Tarball from the spec file URL to SOURCES, or
## Generate a fresh Source Tarball from the local source
##

if [ ${FETCH_SOURCE_TARBALL} -eq 1 ] ; then
	Fetch_Source_Tarball ${PKI_SPECS_FILE} ${IPA_PKI_THEME_SOURCES_DIR}
else
	##
	## Always start with a new 'ipa-pki' staging directory
	##

	rm -rf ${IPA_PKI_THEME_STAGING_DIR}


	##
	## To generate the 'ipa-pki' tarball, construct a staging area
	## consisting of the 'ipa-pki' source components from the
	## current contents of the PKI working repository
	##

	mkdir -p ${IPA_PKI_THEME_DIR}
	cd ${PKI_DIR}
	for file in "${PKI_FILE_LIST}" ;
	do
		cp -p ${file} ${IPA_PKI_THEME_DIR}
	done
	find ${PKI_CMAKE_DIR}             \
		-name .svn -prune -o          \
		-name *.swp -prune -o         \
		-print | cpio -pdum ${IPA_PKI_THEME_DIR} > /dev/null 2>&1
	cd - > /dev/null 2>&1

	mkdir -p ${IPA_PKI_THEME_DOGTAG_DIR}
	cd ${PKI_DOGTAG_DIR}
	cp -p ${PKI_DOGTAG_MANIFEST} ${IPA_PKI_THEME_DOGTAG_DIR}
	for component in "${PKI_COMPONENT_LIST}" ;
	do
		find ${component}             \
		-name .svn -prune -o          \
		-name *.spec -prune -o        \
		-name *.swp -prune -o         \
		-print | cpio -pdum ${IPA_PKI_THEME_DOGTAG_DIR} > /dev/null 2>&1
	done
	cd - > /dev/null 2>&1


	##
	## Create the 'ipa-pki' tarball
	##

	mkdir -p ${IPA_PKI_THEME_SOURCES_DIR}
	cd ${IPA_PKI_THEME_STAGING_DIR}
	# Remove all '*.htm*' web pages and 'Dogtag-specific' graphics
	# Map 'Dogtag' color '#225580' to black
	# Map 'Dogtag' color '#4f52b5' to black
	# Map 'DCS'    text to 'XXX'
	# Map 'dogtag' text to 'XXXXXX'
	# Map 'Dogtag' text to 'XXXXXX'
	# Map 'DOGTAG' text to 'XXXXXX'
	# Map 'Fedora' text to 'XXXXXX'
	# Map 'FEDORA' text to 'XXXXXX'
	find ${IPA_PKI_THEME_DOGTAG_SUBDIR} -name "favicon.ico"     -print -or \
	                                    -name "*.htm"           -print -or \
	                                    -name "*.html"          -print -or \
	                                    -name "logo_header.gif" -print | xargs rm        ;
	find ${IPA_PKI_THEME_DOGTAG_SUBDIR} -type f -exec sed -i 's/#225580/#000000/g' {} \; ;
	find ${IPA_PKI_THEME_DOGTAG_SUBDIR} -type f -exec sed -i 's/#4f52b5/#000000/g' {} \; ;
	find ${IPA_PKI_THEME_DOGTAG_SUBDIR} -type f -exec sed -i 's/DCS/XXX/g'         {} \; ;
	find ${IPA_PKI_THEME_DOGTAG_SUBDIR} -type f -exec sed -i 's/dogtag/XXXXXX/g'   {} \; ;
	find ${IPA_PKI_THEME_DOGTAG_SUBDIR} -type f -exec sed -i 's/Dogtag/XXXXXX/g'   {} \; ;
	find ${IPA_PKI_THEME_DOGTAG_SUBDIR} -type f -exec sed -i 's/DOGTAG/XXXXXX/g'   {} \; ;
	find ${IPA_PKI_THEME_DOGTAG_SUBDIR} -type f -exec sed -i 's/Fedora/XXXXXX/g'   {} \; ;
	find ${IPA_PKI_THEME_DOGTAG_SUBDIR} -type f -exec sed -i 's/FEDORA/XXXXXX/g'   {} \;
	gtar -zcvf ${IPA_PKI_THEME_TARBALL}    \
		"${IPA_PKI_THEME}-${IPA_PKI_THEME_VERSION}" > /dev/null 2>&1
	mv ${IPA_PKI_THEME_TARBALL} ${IPA_PKI_THEME_SOURCES_DIR}
	cd - > /dev/null 2>&1


	##
	## Always remove the PKI staging area
	##

	rm -rf ${IPA_PKI_THEME_STAGING_DIR}
fi


##
## Always generate a fresh 'ipa-pki' package script
##

rm -rf ${IPA_PKI_THEME_PACKAGE_SCRIPT}
printf "#!/bin/bash\n\n"                >  ${IPA_PKI_THEME_PACKAGE_SCRIPT}
printf "${IPA_PKI_THEME_PACKAGE_COMMAND}\n\n" >> ${IPA_PKI_THEME_PACKAGE_SCRIPT}
chmod 775 ${IPA_PKI_THEME_PACKAGE_SCRIPT}


##
## Automatically invoke RPM/SRPM creation
##

cd ${PKI_PACKAGES} ;
bash ./package_${IPA_PKI_THEME} | tee package_${IPA_PKI_THEME}.log 2>&1

