# 
# Docker Building Script.  Reads all the components generated by install, on per-version basis
#

VERSION=2.1.0-SNAPSHOT
# TODO add ability to do DEBUG settings

if ["$1" == ""]; then
  AAF_COMPONENTS=`ls ../aaf_*HOT/bin | grep -v '\.'`
else
  AAF_COMPONENTS=$1
fi
  
for AAF_COMPONENT in ${AAF_COMPONENTS}; do 
	sed -e 's/${AAF_VERSION}/'${VERSION}'/g' -e 's/${AAF_COMPONENT}/'${AAF_COMPONENT}'/g' Dockerfile > ../aaf_${VERSION}/Dockerfile
	cd ..
	docker build -t onap/aaf/aaf_${AAF_COMPONENT}:${VERSION} aaf_${VERSION}
	rm aaf_${VERSION}/Dockerfile
	cd -
done


