diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..e09c276a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,20 @@ +crcengine +numpy +psutil +PyAudio +pyserial +sounddevice +structlog +ujson + +# Development and test dependencies +autopep8 +black +isort +pycodestyle +pyinstaller +pytest +pytest-cov +pytest-cover +pytest-coverage +pytest-rerunfailures diff --git a/tools/create_node_env.sh b/tools/create_node_env.sh new file mode 100755 index 00000000..59c011a5 --- /dev/null +++ b/tools/create_node_env.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +if [ ! -d "gui" ]; then + echo "Error: Run this script from the main FreeDATA directory." + exit 1 +fi + +# Move into gui directory +cd gui + +# Common variables +OLDPATH=${PATH} +PATH=/usr/bin:/bin:/usr/local/bin +NPM=$(which npm) +PATH=${OLDPATH} +VENVDIR="$(pwd)/node_modules" +PATH_ADDITIONS="$(pwd)/node_modules/bin:$(pwd)/node_modules/.bin" + +# Verify NPM exists. +if [ -z "${NPM}" ] || [ ! -x "${NPM}" ]; then + echo "Error: ${NPM} isn't executable or doesn't exist." + exit 1 +fi + +${NPM} install n +${NPM} i + +PATH=${PATH_ADDITIONS}:${PATH} + +n stable + +echo "" +echo "Be sure to add '$PATH_ADDITIONS' to your path." diff --git a/tools/create_python_env.sh b/tools/create_python_env.sh new file mode 100755 index 00000000..66dbac33 --- /dev/null +++ b/tools/create_python_env.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +if [ ! -d "tnc" ]; then + echo "Error: Run this script from the main FreeDATA directory." + exit 1 +fi + +# Common variables +VENVDIR="$(pwd)/.venv" + +# Choose an appropriate python interpreter +CHOSEN=/bin/python3 +for i in python3.8 python3.9 python3.10 python3.7 +do + if [ -x /bin/$i ]; then + CHOSEN="/bin/$i" + break + fi +done + +# Verify it's there. +if [ ! -x ${CHOSEN} ]; then + echo "Error: ${CHOSEN} is not executable or does not exist." + echo "Note: FreeDATA requires Python 3 (higher than version 3.6)." + exit 1 +fi + +# Clear the existing virtual environment. +if [ -e "${VENVDIR}" ]; then + ${CHOSEN} -m venv "${VENVDIR}" --clear +fi + +# Create the virtual environment +${CHOSEN} -m venv "${VENVDIR}" + +# Activate the virtual environment, if needed +if [ -z "${VIRTUAL_ENV}" ] || [ "${VIRTUAL_ENV}" != "${VENVDIR}" ]; then + source "${VENVDIR}/activate" +fi + +# Cease using ${CHOSEN} as the interpreter we want now is in our path. + +# Install packages +python3 -m pip install -U pip wheel +python3 -m pip install -r requirements.txt + +echo "" +echo "Be sure to run '. $VENVDIR/activate' before starting the daemon." diff --git a/tools/setup_python_node.sh b/tools/setup_python_node.sh new file mode 100755 index 00000000..22971e33 --- /dev/null +++ b/tools/setup_python_node.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -e + +if [ ! -d "tnc" ]; then + echo "Error: Run this script from the main FreeDATA directory." + exit 1 +fi + +HERE="$(pwd)" + +echo "Running Python and NodeJS setup scripts for FreeDATA..." + +bash tools/create_python_env.sh +bash tools/create_node_env.sh + +echo "Both Python and NodeJS were setup correctly." +echo "" +echo "Run the following to add the new Python environment to your path:" +echo "source ${HERE}/.venv/activate" +echo "" +echo "Run the following to add the new NodeJS environment to your path:" +echo "PATH=\${PATH}:${HERE}/gui/node_modules/bin:${HERE}/gui/node_modules/.bin"