@@ -17,11 +17,19 @@ set -o errexit -o pipefail
1717# CDPATH reduces the scope of the cd command to potentially prevent unintended directory changes.
1818# This way non-standard tools like readlink aren't needed.
1919SCRIPTS_DIR=${SCRIPTS_DIR:- $( CDPATH=. cd -- " $( dirname -- " ${BASH_SOURCE[0]} " ) " && pwd -P )} # Repository directory containing the shell scripts
20- echo " activateCondaEnvironment: SCRIPTS_DIR=$SCRIPTS_DIR "
20+ echo " activateCondaEnvironment: SCRIPTS_DIR=${ SCRIPTS_DIR} "
2121
2222# Get the "jupyter" directory by taking the path of this script and going two directory up and then to "jupyter".
2323JUPYTER_NOTEBOOK_DIRECTORY=${JUPYTER_NOTEBOOK_DIRECTORY:- " ${SCRIPTS_DIR} /../jupyter" } # Repository directory containing the Jupyter Notebooks
24- echo " activateCondaEnvironment: JUPYTER_NOTEBOOK_DIRECTORY=$JUPYTER_NOTEBOOK_DIRECTORY "
24+ echo " activateCondaEnvironment: JUPYTER_NOTEBOOK_DIRECTORY=${JUPYTER_NOTEBOOK_DIRECTORY} "
25+
26+ # Get the file name of the environment description file for the conda package and environment manager
27+ # that contains all dependencies and their versions.
28+ CONDA_ENVIRONMENT_FILE=${CONDA_ENVIRONMENT_FILE:- " ${JUPYTER_NOTEBOOK_DIRECTORY} /environment.yml" } # Conda (package manager for Python) environment file path
29+ if [ ! -f " ${CONDA_ENVIRONMENT_FILE} " ] ; then
30+ echo " activateCondaEnvironment: Couldn't find environment file ${CONDA_ENVIRONMENT_FILE} ."
31+ exit 2
32+ fi
2533
2634# Define conda environment to use for code structure analysis. Default "codegraph"
2735CODEGRAPH_CONDA_ENVIRONMENT=${CODEGRAPH_CONDA_ENVIRONMENT:- " codegraph" } # Name of the conda environment to use for code graph analysis
@@ -60,18 +68,24 @@ echo "activateCondaEnvironment: scriptExtension=${scriptExtension}"
6068eval " $( ${pathToConda} conda${scriptExtension} shell.bash hook) "
6169echo " activateCondaEnvironment: Current conda environment after shell hook=${CONDA_DEFAULT_ENV} "
6270
63- # Create (if missing) and activate Conda environment for code structure graph analysis
64- if { " ${pathToConda} conda" env list | grep " ${CODEGRAPH_CONDA_ENVIRONMENT} " ; } > /dev/null 2>&1 ; then
65- echo " activateCondaEnvironment: Conda environment ${CODEGRAPH_CONDA_ENVIRONMENT} already created"
66- else
67- if [ ! -f " ${JUPYTER_NOTEBOOK_DIRECTORY} /environment.yml" ] ; then
68- echo " activateCondaEnvironment: Couldn't find environment file ${JUPYTER_NOTEBOOK_DIRECTORY} /environment.yml."
69- exit 2
71+ # If missing, create Conda environment for code graph analysis
72+ # Note: The curly braces are grouping the outputs of both (piped) operations together to suppress them later (dev/null).
73+ if " ${pathToConda} conda" env list | grep " ${CODEGRAPH_CONDA_ENVIRONMENT} " > /dev/null 2>&1 ; then
74+ echo " activateCondaEnvironment: Conda environment ${CODEGRAPH_CONDA_ENVIRONMENT} has already been created."
75+
76+ # Check if the declaration in the environment file matches the actual environment to find out if it needs to be updated.
77+ if " ${pathToConda} conda" compare --name " ${CODEGRAPH_CONDA_ENVIRONMENT} " " ${CONDA_ENVIRONMENT_FILE} " > /dev/null 2>&1 ; then
78+ echo " activateCondaEnvironment: Conda environment ${CODEGRAPH_CONDA_ENVIRONMENT} is up-to-date."
79+ else
80+ echo " activateCondaEnvironment: Conda environment ${CODEGRAPH_CONDA_ENVIRONMENT} needs to be updated."
81+ " ${pathToConda} conda" env update --file " ${CONDA_ENVIRONMENT_FILE} " --name ${CODEGRAPH_CONDA_ENVIRONMENT} --prune
7082 fi
71- echo " activateCondaEnvironment: Creating Conda environment ${CODEGRAPH_CONDA_ENVIRONMENT} "
72- " ${pathToConda} conda" env create --file " ${JUPYTER_NOTEBOOK_DIRECTORY} /environment.yml" --name " ${CODEGRAPH_CONDA_ENVIRONMENT} "
83+ else
84+ echo " activateCondaEnvironment: Creating Conda environment ${CODEGRAPH_CONDA_ENVIRONMENT} ..."
85+ " ${pathToConda} conda" env create --file " ${CONDA_ENVIRONMENT_FILE} " --name " ${CODEGRAPH_CONDA_ENVIRONMENT} "
7386fi
7487
88+ # Activate code graph Conda environment
7589echo " activateCondaEnvironment: Activating Conda environment ${CODEGRAPH_CONDA_ENVIRONMENT} "
7690" ${pathToConda} conda" activate ${CODEGRAPH_CONDA_ENVIRONMENT}
7791
0 commit comments