#!/bin/bash

set -eu
set -o pipefail

function usage
{
    retval="$1"
    case "$retval" in
        0)
            ;;
        *)
            exec 1>&2
            ;;
    esac
    echo "Usage: $0 movie_file1_to_fix movie_file2_to_fix ... movie_filen_to_fix"
    exit "$retval"
}

case "$1" in
    -h|--help)
        usage 0
        ;;
    --)
        # Allow arguments following this one to start with a -
        shift
        ;;
    -*)
        echo "$0: Unrecognized option: $1" 1>&2
        usage 1
        ;;
esac

for filename in "$@"
do
    case "$filename" in
        *.ogm|*.mkv)
            mv "$filename.failed" "$filename"
            if [ -f "$filename.rip-output" ]
            then
                xz -f "$filename.rip-output"
            fi
            ;;
        *.ogm.|*.mkv.)
            # shellcheck disable=SC2001
            target_filename=$(echo "$filename" | sed 's/\.$//')
            mv "${filename}failed" "$target_filename"
            if [ -f "${filename}rip-output" ]
            then
                xz -f "${filename}rip-output"
            fi
            ;;
        *.ogm.failed|*.mkv.failed)
            # shellcheck disable=SC2001
            target_filename=$(echo "$filename" | sed 's/\.failed$//')
            mv "${target_filename}.failed" "$target_filename"
            if [ -f "${target_filename}.rip-output" ]
            then
                xz -f "${target_filename}.rip-output"
            fi
            ;;
        *)
            {
                echo "$0: Unrecognized filename format: $filename"
                echo "Recognized forms:"
                echo "   foo.mkv"
                echo "   foo.mkv."
                echo "   foo.mkv.failed"
                echo "   foo.ogm"
                echo "   foo.ogm."
                echo "   foo.ogm.failed"
            } 1>&2
    esac
done