#! /bin/bash

# Script to convert CR3 files to DNG.

WINE_PREFIX=$(echo $HOME/.dng-wine)
CONVERTER_PATH='C:\Program Files\Adobe\Adobe DNG Converter\Adobe DNG Converter.exe'
FLAGS='-c -fl -p1'

# Converts foreward slashes to back slashes.
function foreward2Back() {
    sed 's:/:\\:g'
}

# Converts a directory path a wine friendly path.
function dir2Wine() {
    echo 'z:'"$(echo $( cd "$1" >/dev/null 2>&1 ; pwd -P ) | foreward2Back)"
}

# Converts file path to a wine friendly path to the file.
function file2Wine() {
    echo $(dir2Wine $(dirname $1))\\$(basename $1)
}

# Converts a CR3 RAW file to DNG RAW.
function convertFile() {
    WINEPREFIX="$WINE_PREFIX" wine "$CONVERTER_PATH" \
    $FLAGS $2 "$(file2Wine $1)" &
}

# Converts all CR3 RAW files in a directory to DNG RAW.
function convertDir() {
    for file in $1*.cr3; do
	convertFile $file "-d $2"
    done
}

start=`date +%s%N`

src=$1
dst=$(dir2Wine $2)

if [[ -d $src ]]; then
    convertDir $src $dst
elif [[ -f $src ]]; then
    convertFile $src $dst
else
    echo "$src is not valid"
    exit 1
fi

wait
end=`date +%s%N`
echo Execution time was `expr $end - $start` nanoseconds.