#!/bin/sh

# Quick and dangerous script for building OSX binaries.

# At the moment, pyinstaller has no support for entry points, except for this
# hideous hack on the wiki:
#   https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Setuptools-Entry-Point
# Once this is fixed, we can ditch the redundant command scripts.

VENV=../venv.mitmproxy
PYINST_CMD="$VENV/bin/pyinstaller -F --clean"
TMPDIR=./tmp
CACHE="~/Library/Application Support/pyinstaller"


if [ ! -d $VENV ]
then
    echo "Failed: set up a dev environment as described in the README"
    echo "and run from the top-level mitmproxy directory."
    exit
fi

source $VENV/bin/activate

if [ ! -f $VENV/bin/pyinstaller ]
    then
    echo "Installing pyinstaller..."
    $VENV/bin/pip install \
        --force-reinstall \
        --upgrade \
        https://github.com/pyinstaller/pyinstaller/archive/develop.zip
    $VENV/bin/pip install --upgrade macholib
fi

# readline.so is actually a symlink to a Python file, which breaks PyInstaller
# (and readline itself). Why? Who knows. Re-address this when this stupidity
# ceases to be.
echo "Removing broken readline..."
rm -f $VENV/lib/python2.7/readline.so


echo "Clearing caches..."
rm -f dist/*
rm -rf $TMPDIR
rm -rf $CACHE

$PYINST_CMD ./release/mitmdump.spec
echo "Running mitmdump..."
./dist/mitmdump --version || exit 1

$PYINST_CMD ./release/mitmproxy.spec
echo "Running mitmproxy..."
./dist/mitmproxy --version || exit 1

$PYINST_CMD ./release/mitmweb.spec
echo "Running mitmweb..."
./dist/mitmweb --version || exit 1

DST=osx-mitmproxy-`./dist/mitmdump --shortversion 2>&1`
mkdir -p $TMPDIR/$DST
cp ./dist/mitmproxy $TMPDIR/$DST
cp ./dist/mitmdump $TMPDIR/$DST
cshape ./doc-src $TMPDIR/$DST/doc

cd $TMPDIR
tar -czvf $DST.tar.gz $DST