#!/bin/bash
## Created by: deaves - 9/30/2007
# This script will rename all .jpg image files to a unique hash filename.
#

usage () {
    echo -e "\nUsage: $0 -s <SOURCE> [ -d <DESTINATION> -f <SQL DUMP> ]\n"
    echo -e "\t-s: specifies the source directory. (required)"
    echo -e "\t-d: specify the destination."
    echo -e "\t-f: create an sql dump to import into MySQL.\n"
}

### Clean up variables before next loop (precautionary).
cleanVar () {
    unset fileHash

    ### We don't want to clean this var unless we have to.
    if [ "${dirName}" == "$(dirname ${sourceFile})" ]; then
        unset dirName
    fi
}

### Function to create the MySQL dump file to import.
createSQL () {
    if [ -n "${sqlDump}" ]; then
 	echo "INSERT INTO \`pictures\` (\`img_name\`) VALUES('${fileHash}');" >> "${sqlDump}"
    fi
}

### Get passed options.
while getopts ":s:d:f:" ARG; do
    case "${ARG}" in
        s) dirSource="${OPTARG}";;
        d) dirName="${OPTARG}";;
        f) sqlDump="${OPTARG}";;
    esac
done

### Running main loop...
[ -z "${dirSource}" ] && { usage && exit 1; }
find "${dirSource}" -name *.[j,J][p,P][g,G] | while read sourceFile; do

    ### We don't want to overwrite this var by mistake.
    if [ -z "${dirName}" ]; then
        dirName=`dirname "${sourceFile}"`
    fi

    fileHash=`md5sum -b "${sourceFile}" | awk '{print $1}'`
    cp "${sourceFile}" "${dirName}/${fileHash}.jpg"
    createSQL; cleanVar

done

