#!/usr/bin/env bash
#
# This script creates a virtualenv named 'env' and installs all pinned
# python dependencies before activating the env and running Electrum.
# If 'env' already exists, it is activated and Electrum is started
# without any installations (unless the pins have changed).
#
# By default, not all optional dependencies are installed.
# E.g. for hardware wallet support, do:
# $ source ./env/bin/activate
# $ pip install -r contrib/deterministic-build/requirements-hw.txt
# $ deactivate

set -e

cd "$(dirname "$0")"
if [ -e ./env/bin/activate ]; then  # existing venv
    source ./env/bin/activate
else  # create new venv
    echo "Creating new venv."
    python3 -m venv env
    source ./env/bin/activate
    pip install -r contrib/deterministic-build/requirements.txt
    pip install -r contrib/deterministic-build/requirements-binaries.txt
    pip install --no-dependencies -e .
    echo "Done creating venv."
fi

# This might be an old directory and our requirements might have changed in the meantime:
DEPS_CHANGED_TIME=$(stat --printf %Y contrib/deterministic-build/requirements.txt)
if [ "$DEPS_CHANGED_TIME" -gt "$(stat --printf %Y env)" ] ; then
    echo "Detected changed requirements.txt. Updating dependencies now..."
    pip install -r contrib/deterministic-build/requirements.txt
    pip install -r contrib/deterministic-build/requirements-binaries.txt
    touch env
    echo "Done updating deps."
fi

./run_electrum "$@"
