#! /bin/bash


help() {
  echo ""
  echo "mtraconcatter - script for MEGAlib";
  echo "(C) by Andreas Zoglauer"
  echo "";
  echo "Usage:";
  echo "    mtraconcatter [long list of tra files]";
  echo "";
  echo "Example:";
  echo "    mtraconcatter RunTest*.sim";
  echo "";
  echo "This script creates a concatenation trafile always named Concat.sim"
  echo "";
}

if [ $# -eq 0 ]; then
    echo "Error: This script requires one or more input parameter, not $#"
    exit -1;
fi

Files=( "$@" )

# Check if all files exits
for F in "${Files[@]}"; do
  if [[ ! -f ${F} ]]; then 
    echo "Error: The following input file does not exist: ${F}"
    exit 1
  fi
done


# Find common prefix
ConcatFileName=`printf "%s\n" "${Files[@]}" | sed -e '$!{N;s/^\(.*\).*\n\1.*$/\1\n\1/;D;}'`
# Remove a inc
ConcatFileName=${ConcatFileName%inc}
# Remove a final .
ConcatFileName=${ConcatFileName%.}
# Make sure we do have something, otherwise
if [[ "${ConcatFileName}" == "" ]]; then
  ConcatFileName="Concat"
fi 
# Append suffix
ConcatFileName+=".tra"


# Make sure the output file does not exist
if [ -f ${ConcatFileName} ]; then
  rm ${ConcatFileName}
fi

# Determine if the first file is zipped
if [[ ${Files[0]} == *.gz ]]; then
  Zip="yes"
else
  Zip="no"
fi

# Create a concatenation file
echo "# Concatenation file generated by mtraconcatter" >> ${ConcatFileName}

TEMP=`mktemp`
if [[ "${Zip}" == "yes" ]]; then
  gunzip -c ${Files[0]} 2> /dev/null | head -n 100 > ${TEMP}
  # Remark: 2> /dev/null suppresses a "unexpected end of file" error message since the file is obviously not yet closed
else 
  head -n 100 ${Files[0]} > ${TEMP}
fi
  
while read LINE
do
  # Keep all information but: #, Seed, TB
  FIRST=${LINE%% *}
  if [ "${FIRST}" == "SE" ]; then
    break
  fi
  if ( [ "${FIRST}" != "#" ] && [ "${FIRST}" != "Seed" ] && [ "${FIRST}" != "TB" ] ); then
    echo "${LINE}" >> ${ConcatFileName}
  fi
done < ${TEMP}
rm ${TEMP}

echo " " >> ${ConcatFileName}

for File in "${Files[@]}"; do
  echo "IN ${File}" >> ${ConcatFileName}
done
    
echo "EN" >> ${ConcatFileName}
echo " " >> ${ConcatFileName}

# Zip the concatenation file if desired
if [[ "${Zip}" == "yes" ]]; then
  gzip ${ConcatFileName}
fi

exit 0;
