# ---------------------------------------------------------------------
#
# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
#                        pour la SantÈ)
# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
# Previous Authors : Laurent Guigues, Jean-Pierre Roux
# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
#
#  This software is governed by the CeCILL-B license under French law and
#  abiding by the rules of distribution of free software. You can  use,
#  modify and/ or redistribute the software under the terms of the CeCILL-B
#  license as circulated by CEA, CNRS and INRIA at the following URL
#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
#  or in the file LICENSE.txt.
#
#  As a counterpart to the access to the source code and  rights to copy,
#  modify and redistribute granted by the license, users are provided only
#  with a limited warranty  and the software's author,  the holder of the
#  economic rights,  and the successive licensors  have only  limited
#  liability.
#
#  The fact that you are presently reading this means that you have had
#  knowledge of the CeCILL-B license and that you accept its terms.
# ------------------------------------------------------------------------ */

#!/bin/bash
# creates the file architecture for a new user package

if [ $# -lt 5 ]
    then
    echo "usage : bbCreateBlackBox <dir-path> <package-name> <blackbox-name> <type> <format> [author] [description] [category]"
    echo "   type:  "
    echo "         std  "
    echo "         VTK_ImageAlgorithm  "
    echo "         VTK_PolyDataAlgorithm  "
    echo "         widget  "
    echo "   format:  "
    echo "         XML  "
    echo "         C++ "
#bbCreateBox <template-xml-file-name> <box-name> <package-name> [author] [description] [category]"  
    exit
fi

# bbCreatePackage path
TMP=$(which $0|rev)
BINPATH=$(echo ${TMP#*/}|rev)
#INPUT=$1

OUTPUT_DIR=$1
PACKAGE=$2
BOX=$3
TYPE=$4
FORMAT=$5
AUTHOR=$6
DESCRIPTION=$7
CATEGORY=$8
# Input template file 
INPUT=${BINPATH}/../share/bbtk/data/kernel/bbCreateBlackBox/xml-templates/${TYPE}-template.xml
FILENAME=bb${PACKAGE}${BOX}

echo "output dir  = " $OUTPUT_DIR
echo "box name    = " $BOX
echo "package     = " $PACKAGE
echo "author      = " $AUTHOR
echo "description = " $DESCRIPTION
echo "category    = " $CATEGORY
echo "type        = " $TYPE
echo "format      = " $FORMAT
echo "input       = " $INPUT


echo "** Creating new black box  '$BOX' in folder '$OUTPUT_DIR'"

if [ -f ${OUTPUT_DIR}/${FILENAME}.xml ]
    then
    echo "Error : ${OUTPUT_DIR}/${FILENAME}.xml already exists"
    exit
fi

echo " - Creating ${FILENAME}.xml"

sed s,__BLACKBOXNAME__,"${BOX}", < ${INPUT} | sed  s/__AUTHOR__/"${AUTHOR}"/ | sed s{__DESCRIPTION__{"${DESCRIPTION}"{ | sed s/__CATEGORY__/"${CATEGORY}"/ > ${OUTPUT_DIR}/${FILENAME}.xml
	   
if [ "${FORMAT}" = "C++" ]
    then
    if [ -f ${OUTPUT_DIR}/${FILENAME}.h ]
	then
	echo "Error : ${OUTPUT_DIR}/${FILENAME}.h already exists"
	exit
    fi
    echo " - Creating ${FILENAME}.h/cxx"
    ${BINPATH}/bbfy ${OUTPUT_DIR}/${FILENAME}.xml ${PACKAGE} ${OUTPUT_DIR}/ -q
    echo " - Deleting ${FILENAME}.xml"
    rm ${OUTPUT_DIR}/${FILENAME}.xml
fi

echo "Black box created !"

