#!/bin/sh
#-----------------------------------------------------------------------
#
# VISIT-CREATE-CHKSUMS - Create lists of the md5 checksums, sha1
#                        checksums, and file sizes for the visit
#                        distribution.
#
#                        This script should be run in the 
#                        /project/projectdirs/visit/www/releases
#                        directory at NERSC.
#
# Author: Eric Brugger
# Date:   August 30, 2005
#
# Usage:
#    visit-create-chksums -v <version> -d <distribution>
#
#-----------------------------------------------------------------------

dist=undefined
version=undefined

#
# The loop is executed once for each symbol on the execute line.  This means
# that $1 may be blank for later executions of the loop if any "shift 2"
# commands are executed.  The variable abc is not used in the loop.  
#
for abc
do
   case $1 in
      -d)
         dist=$2
         shift 2
         ;;
      -v)
         version=$2
         shift 2
         ;;
   esac
done

#
# Check that the distribution name and version number was provided.
#
if [ $dist = undefined ]
then
   echo "Usage: -v <version> -d <distribution>"
   exit
fi

if [ $version = undefined ]
then
   echo "Usage: -v <version> -d <distribution>"
   exit
fi

version2=`echo $version | tr "." "_"`

#
# Create an awk script for use with the filesize command
#
rm -f format_filesize $version/format_filesize
cat <<EOF > format_filesize
BEGIN { FS = " " }
      { printf "%-25s %s\n", \$5, \$9}
EOF
cp format_filesize $version

#
# Create a script to generate the file size.
#
rm -f filesize $version/filesize
cat <<EOF > filesize
#!/bin/sh
ls -l \$1 | sed "s/  */ /g" | gawk -f ../format_filesize
EOF
chmod 755 filesize
cp filesize $version

#
# Create the md5 checksums, the sha1 checksums, and the file sizes.
#
cd $version
rm -f visit_md5_checksums visit_sha1_checksums
rm -f visit_sha256_checksums visit_filesizes
cmds="md5sum sha1sum sha256sum ../filesize"
for cmd in $cmds
do
   case $cmd in
      md5sum)
         property=checksums
         output=visit_md5_checksums
         ;;
      sha1sum)
         property=checksums
         output=visit_sha1_checksums
         ;;
      sha256sum)
         property=checksums
         output=visit_sha256_checksums
         ;;
      ../filesize)
         property="file sizes"
         output=visit_filesizes
         ;;
   esac

   rm -f $output
   echo ""                                                >  $output
   echo "The VisIt executable $property"                  >> $output
   echo ""                                                >> $output
   $cmd INSTALL_NOTES.txt                                 >> $output
   $cmd jvisit$version.tar.gz                             >> $output
   $cmd visit$version.darwin-x86_64-10_14.dmg             >> $output
   $cmd visit$version.darwin-x86_64-10_14.tar.gz          >> $output
   $cmd visit$version.darwin-x86_64-10.13.dmg             >> $output
   $cmd visit$version.darwin-x86_64-10.13.tar.gz          >> $output
   $cmd visit$version2.linux-x86_64-centos8.tar.gz        >> $output
   $cmd visit$version2.linux-x86_64-debian9.tar.gz        >> $output
   $cmd visit$version2.linux-x86_64-fedora27.tar.gz       >> $output
   $cmd visit$version2.linux-x86_64-rhel7.tar.gz          >> $output
   $cmd visit$version2.linux-x86_64-rhel7-wmesa.tar.gz    >> $output
   $cmd visit$version2.linux-x86_64-ubuntu16.tar.gz       >> $output
   $cmd visit$version2.linux-x86_64-ubuntu18.tar.gz       >> $output
   $cmd visit$version2.linux-x86_64-ubuntu19.tar.gz       >> $output
   $cmd visit${version}_x64.exe                           >> $output
   $cmd visit-install$version2                            >> $output

   echo ""                                                >> $output
   echo "The VisIt source code $property"                 >> $output
   echo ""                                                >> $output
   $cmd build_visit$version2                              >> $output
   $cmd $dist.tar.gz                                      >> $output
   $cmd visitdev$version.exe                              >> $output
   files=`ls third_party`
   for file in $files
   do
      $cmd third_party/$file | sed "s/third_party\///" >> $output
      shift
   done

   shift
done

#
# Set permissions on the output files.
#
chmod 664 visit_md5_checksums visit_sha1_checksums
chmod 664 visit_sha256_checksums visit_filesizes
chgrp visit visit_md5_checksums visit_sha1_checksums
chgrp visit visit_sha256_checksums visit_filesizes

#
# Rename the output files to add ".txt"
#
mv visit_md5_checksums visit_md5_checksums.txt
mv visit_sha1_checksums visit_sha1_checksums.txt
mv visit_sha256_checksums visit_sha256_checksums.txt
mv visit_filesizes visit_filesizes.txt

#
# Clean up temporary files.
#
cd ..
rm -f format_filesize $version/format_filesize
rm -f filesize $version/filesize
