#!/bin/sh
set -e

: ${1?"Usage: $0 12345, where 12345 is the maximum number of kilobytes to select"}
maxkb=$1
srcdir=$(pwd)

rm() {
    /bin/rm "$@"
}

cp() {
    /bin/cp "$@"
}

mkdir() {
    /bin/mkdir "$@"
}

die() {
    echo "error: $@" >&2
    exit 1
}

destdir=songbundle
destfile=songbundle.tar
[ ! -e "../$destdir" ] || die "../$destdir exists"
[ ! -e "../$destfile" ] || die "../$destfile exists"

trap 'rm -rf "../$destdir"' 0 INT

echo "scanning for music..."
find . -name '*.mp3' -o -name '*.ogg' | sort -R | (
    cd ..

    mkdir "$destdir"
    cd "$destdir"
    while read filename; do
        dirname=$(dirname "$filename")
        [ -d "$dirname" ] || mkdir -p "$dirname"
        echo "copying $filename"
        cp -a "$srcdir/$filename" "$dirname"/.
        if [ "$(du -sk . | awk '{print $1}')" -gt "$maxkb" ]; then
            echo "okay, too big, removing"
            rm "$filename"
            break
        fi
    done

    cd ..

    tar cvf "$destfile" "$destdir"
    rm -rf "$destdir"
    ls -lh "$destfile"
)
