# define modules runtime quarantine configuration
#set(ENV{MODULES_RUN_QUARANTINE} "ENVVARNAME")

# setup quarantine if defined
set(_mlre "")
if(DEFINED ENV{MODULES_RUN_QUARANTINE})
   string(REPLACE " " ";" _mlv_list "$ENV{MODULES_RUN_QUARANTINE}")
   foreach(_mlv ${_mlv_list})
      if(${_mlv} MATCHES "^[A-Za-z_][A-Za-z0-9_]*$")
         if(DEFINED ENV{${_mlv}})
            string(APPEND _mlre
                   " [===[__MODULES_QUAR_${_mlv}=$ENV{${_mlv}}]===]")
         endif()
         set(_mlrv "MODULES_RUNENV_${_mlv}")
         string(APPEND _mlre " [===[${_mlv}=$ENV{${_mlrv}}]===]")
     endif()
   endforeach()
   if (NOT "${_mlre}" STREQUAL "")
      set(_mlre "env ${_mlre} __MODULES_QUARANTINE_SET=1")
   endif()
endif()

# define module command and surrounding initial environment (default value
# for MODULESHOME, MODULEPATH, LOADEDMODULES and parse of init config files)
execute_process(COMMAND mktemp -t moduleinit.cmake.XXXXXXXXXXXX
  OUTPUT_VARIABLE tempfile_name
  OUTPUT_STRIP_TRAILING_WHITESPACE)
set(quotedArgs "COMMAND ${_mlre} /usr/bin/tclsh \"/usr/lib/environment-modules/modulecmd.tcl\" cmake")
string(APPEND quotedArgs " autoinit OUTPUT_FILE ${tempfile_name}")
cmake_language(EVAL CODE "execute_process(${quotedArgs})")
if(EXISTS ${tempfile_name})
  include(${tempfile_name})
  file(REMOVE ${tempfile_name})
endif()
