#!/bin/bash

TARBALL_NAME='pcl'

PCP_DIR="`rospack find pcl`/../"
VERSION="`cat ${PCP_DIR}/CMakeLists.txt | grep rosbuild_make_distribution | tr -d '_a-zA-Z()'`"

MSG_HEADERS_DIR='/include/pcl/msg'
EXTRA_MSGS_DIR="`rospack find sensor_msgs`/msg_gen/cpp/include/sensor_msgs"

function copy_files
{
    SOURCE="${1}"
    DEST="${2}"
    cp -r "${1}" "${2}"
}

function copy_all_files
{
    DEST="${1}"
    # Copy source
    mkdir "${DEST}/src"
    cp -r src/* "${DEST}/src/"
    # Copy headers
    mkdir "${DEST}/include"
    cp -r include/* "${DEST}/include/"
    mkdir -p "${DEST}/${MSG_HEADERS_DIR}"
    cp -r msg_gen/cpp/include/pcl/* "${DEST}/${MSG_HEADERS_DIR}"
    cp ${EXTRA_MSGS_DIR}/PointCloud2.h "${DEST}/${MSG_HEADERS_DIR}"
    cp ${EXTRA_MSGS_DIR}/PointField.h "${DEST}/${MSG_HEADERS_DIR}"
    # Copy test
    mkdir "${DEST}/test"
    cp -r test/* "${DEST}/test"
    # Copy misc
    cp rosbuild.cmake "${DEST}"
    cp PCLPCHSupport.cmake "${DEST}"
}

function strip_header
{
    HEADER="${1}"
    echo "Stripping ${HEADER}"
}

function strip_headers
{
    HEADER_DIR="${1}"
    for ii in `ls ${HEADER_DIR}/*.h`
    do
        strip_header ${ii}
    done
}

function make_cmakelists
{
    DEST="${1}"
    cat ./CMakeLists.txt | sed '/include/s/$ENV{ROS_ROOT}\/core\/rosbuild\///' > ${DEST}/CMakeLists.txt
}

if [ -n "${1}" ]
then
    VERSION="${1}"
fi

if [ -n "${2}" ]
then
    TARBALL_NAME="${2}"
fi

TEMP_DIR="${TARBALL_NAME}-${VERSION}"
echo ${EXTRA_MSGS_DIR}

echo "Making temporary directory ${TEMP_DIR}"
mkdir -p "${TEMP_DIR}"
echo "Copying all files"
copy_all_files "${TEMP_DIR}"
echo "Stripping headers"
strip_headers "${TEMP_DIR}/${MSG_HEADERS_DIR}"
echo "Making CMakeLists.txt"
make_cmakelists "${TEMP_DIR}"
echo "Creating tarball"
tar -czf ${TEMP_DIR}.tar.gz ${TEMP_DIR}
echo "Deleting temporary directory"
rm -rf ${TEMP_DIR}
echo "Done"

