#!/bin/bash

set -eu
set -o pipefail

# shellcheck disable=SC2086
tempdir="/tmp/$(basename $0).$$.dir"
# shellcheck disable=SC2086
tempfile="/tmp/$(basename $0).$$.file"
# shellcheck disable=SC2064
trap "rm -rf \"$tempdir\" \"$tempfile\"" $(seq 0 15)
mkdir -p "$tempdir"

function usage
{
    retval="$1"
    case "$retval" in
        0)
            ;;
        *)
            exec 1>&2
            ;;
    esac
    echo "Usage: $0 --to-file path.mp3 --artist bandname --title songname fn1.mp3 fn2.mp3 .. fnn.mp3"
    exit "$retval"
}

while [ "$#" -ge 1 ]
do
    case "$1" in
        --)
            shift
            # The rest of our arguments are input files.
            break
            ;;
        --to-file)
            # The single output file.
            output_file="$2"
            shift
            ;;
        --artist)
            artist="$2"
            shift
            ;;
        --song-title)
            title="$2"
            shift
            ;;
        -h|--help)
            usage 0
            ;;
        --*)
            echo "$0: unrecognized option: $1" 1>&2
            usage 1
            ;;
        *)
            # The rest of our arguments are input files.
            break
            ;;
    esac
    shift
done


echo '$@ is' "$@"
for file in "$@"
do
    bn=$(basename "$file")
    ffmpeg -i "$file" "$tempdir/$bn"
done

cat "$tempdir"/* > "$output_file"

mp3val "$output_file" -f -nb

id3v2 --song "$title" --artist "$artist" "$output_file"