#!/bin/bash

test ! -e "$LIST_OF_ACTIONS" && {
    echo "Mocking is not set up properly."
    echo "LIST_OF_ACTIONS should point to an existing file."
    exit 1
}

test ! -e "$LIST_OF_DIRECTORIES" && {
    echo "Mocking is not set up properly."
    echo "LIST_OF_DIRECTORIES should point to an existing file."
    exit 1
}

test ! -e "$XE_RESPONSE" && {
    echo "Mocking is not set up properly."
    echo "XE_RESPONSE should point to an existing file."
    exit 1
}

test ! -e "$XE_CALLS" && {
    echo "Mocking is not set up properly."
    echo "XE_CALLS should point to an existing file."
    exit 1
}

function mktemp {
    if test "${1:-}" = "-d";
    then
        echo "tempdir"
    else
        echo "tempfile"
    fi
}

function wget {
    if [[ $@ =~ "failurl" ]]; then
        return 1
    fi
    echo "wget $@" >> $LIST_OF_ACTIONS
}

function mkdir {
    if test "${1:-}" = "-p";
    then
        echo "$2" >> $LIST_OF_DIRECTORIES
    fi
}

function unzip {
    echo "Random rubbish from unzip"
    echo "unzip $@" >> $LIST_OF_ACTIONS
}

function rm {
    echo "rm $@" >> $LIST_OF_ACTIONS
}

function ln {
    echo "ln $@" >> $LIST_OF_ACTIONS
}

function [ {
    if test "${1:-}" = "-d";
    then
        echo "[ $@" >> $LIST_OF_ACTIONS
        for directory in $(cat $LIST_OF_DIRECTORIES)
        do
            if test "$directory" = "$2"
            then
                return 0
            fi
        done
        return 1
    fi
    echo "Mock test does not implement the requested function: ${1:-}"
    exit 1
}

function die_with_error {
    echo "$1" >> $DEAD_MESSAGES
}

function xe {
    cat $XE_RESPONSE
    {
    for i in $(seq "$#")
    do
        eval "echo \"\$$i\""
    done
    } >> $XE_CALLS
}
