#!/usr/bin/env bash

# This script is used to update cpp/BoostParts to the latest boost version
# Give it the full path to the boost_1_XX_X folder

# Exit if error
set -e

if [ -z "$1" ]; then
  echo "Usage: $0 /path/to/boost_1_XX_X"
  exit 0
fi

pushd $1

./bootstrap.sh
b2 tools/bcp

boost_part_dir=`mktemp -d -t boost_parts.XXXXXX`

dist/bin/bcp boost/utility.hpp boost/python.hpp boost/bind.hpp boost/lambda/lambda.hpp boost/exception/all.hpp boost/tuple/tuple_io.hpp boost/tuple/tuple_comparison.hpp boost/regex.hpp boost/foreach.hpp boost/smart_ptr.hpp boost/algorithm/string_regex.hpp boost/thread.hpp boost/unordered_map.hpp boost/unordered_set.hpp boost/format.hpp boost/ptr_container/ptr_container.hpp boost/filesystem.hpp boost/filesystem/fstream.hpp boost/utility.hpp boost/algorithm/cxx11/any_of.hpp atomic lockfree assign $boost_part_dir

pushd $boost_part_dir

# DON'T exit if error
set +e

find libs \( -name assign -o -name mpi -o -name config -o -name lockfree \) -exec rm -rf '{}' \;
find libs \( -name doc -o -name test -o -name examples -o -name build \) -exec rm -rf '{}' \;
find libs -not \( -name "*.hpp" -o -name "*.cpp" -o -name "*.ipp" -o -name "*.inl" \) -type f -delete

# Exit if error
set -e

popd
popd

rm -rf cpp/BoostParts/libs
rm -rf cpp/BoostParts/boost

cp -R $boost_part_dir/libs cpp/BoostParts/libs
cp -R $boost_part_dir/boost cpp/BoostParts/boost

rm -rf $boost_part_dir
