#!/bin/bash


(
pip install --upgrade pip
. ./my-python3-env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

#pip uninstall jupyter
#pip uninstall jupyter_contrib_nbextensions
#pip uninstall jupyter_nbextensions_configurator
#pip uninstall jupyterthemes
#pip uninstall jupyterlab
#pip uninstall jupyterlab-server


pip install jupyterlab-server
pip install jupyter
pip install jupyter_contrib_nbextensions
pip install jupyter_nbextensions_configurator
pip install jupyterthemes
pip install jupyterlab
pip install jupyter-lsp
pip install jupyter_lsp
pip install jupyterlab-lsp

pip install -U "jupyter-server<2.0.0"


pip install -e reqs/picat_kernel/
jupyter kernelspec install reqs/picat_kernel
pip install -force -e reqs/metta_kernel/
jupyter kernelspec install reqs/metta_kernel
jupyter kernelspec install src
#--user 65534:65534 \
# -d --restart always 



# Function to generate a random 4-digit number
generate_random_number() {
  echo $(( RANDOM % 9000 + 1000 ))
}

# Function to execute on Ctrl+C
handle_sigint() {
  echo "SIGINT caught, cleaning up..."
  docker kill mlhub
  docker rm mlhub
  docker kill ml-hub
  docker rm ml-hub
  docker kill ml-workspace
  docker rm ml-workspace
  exit
}

# Trap SIGINT (Ctrl+C) and call handle_sigint()
trap 'handle_sigint' SIGINT

# Generate a random 4-digit number
AUTH_CODE=$(generate_random_number)

# Run Docker container with the generated AUTH_CODE
echo docker run \
  -d --restart always \
  -p 17888:8080 \
  --name "ml-workspace" \
  -v "${PWD}:/workspace" \
  --env AUTHENTICATE_VIA_JUPYTER="$AUTH_CODE" \
  --shm-size 2512m \
  mltooling/ml-workspace

mkdir -p jupyterhub_data

echo docker run \
  -d --restart always \
  -p 17880:8080 \
  --name "ml-hub" \
  -v "${PWD}:/workspace" \
  --env AUTHENTICATE_VIA_JUPYTER="$AUTH_CODE" \
  --shm-size 2512m \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v jupyterhub_data:/data \
  mltooling/ml-hub:latest

echo ""
echo ""
echo "Authentication code for Jupyter: $AUTH_CODE"
echo ""
echo ""
echo docker run \
  -v "${PWD}:/workspace" \
  --name "ml-hub" \
  -p 17880:8080 \
  --env AUTHENTICATE_VIA_JUPYTER="$AUTH_CODE" \
  --env JUPYTERHUB_API_TOKEN="$AUTH_CODE" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v jupyterhub_data:/data \
  mltooling/ml-hub:latest

echo "Authentication code for Jupyter: $AUTH_CODE"

echo sleep 10

# Follow Docker logs
# echo ( docker logs -f ml-workspace ) || true

# Clean up
# handle_sigint
export PYTHONPATH=$PYTHONPATH:/opt/logicmoo_opencog/hyperon-wam/src

export PATH=/opt/logicmoo_opencog/hyperon-wam:/opt/logicmoo_opencog/hyperon-wam/reqs/Picat:$PATH

chown logicmoo my-python3-env/ -R
echo ""
echo ""
echo "Authentication code for Jupyter: $AUTH_CODE"
echo ""
echo ""
sudo -u logicmoo jupyter notebook --allow-root --no-browser --port=17888 --ip 0.0.0.0 --password $AUTH_CODE
)