Merge branch '406-modulecmd-re-initialize-pmodules-env-with-module-purge' into 'master'

Resolve "modulecmd: re-initialize Pmodules env with "module purge""

Closes #406

See merge request Pmodules/src!438
This commit is contained in:
2025-03-14 17:18:40 +01:00
+39
View File
@@ -2426,6 +2426,45 @@ subcommand_purge() {
[[ ${modules[$i]} == Pmodules/* ]] && continue
subcommand_unload "${modules[$i]}"
done
# re-initialize Pmodules
# - save
# - used release stages
# - used groups
# - used overlays
# - additional directories in MODULEPATH
# - re-initialize PMODULES_ENV
# - restore
local -- saved_relstages="${UsedReleaseStages}"
local -- saved_groups="${UsedGroups}"
local -- saved_overlays=''
printf -v used_overlays "%s:" "${UsedOverlays[@]}"
used_overlays="${used_overlays%:}"
local -- dir=''
local -- group=''
local -a modulepath=()
local -- saved_modulepath=''
IFS=':' read -r -a modulepath <<<"${MODULEPATH}"
for dir in "${modulepath[@]}"; do
find_overlay ol group "${dir}" && continue
saved_modulepath+="${dir}:"
done
pmodules_setup init
local -- item=''
for item in "${saved_relstages//:/ }"; do
subcommand_use "${item}"
done
for item in "${saved_overlays//:/ }"; do
[[ -v OverlayInfo[${item}:used] ]] || continue
subcommand_use "${item}"
done
for item in "${saved_groups//:/ }"; do
[[ -v GroupDepths[${item}] ]] || continue
subcommand_use "${item}"
done
for item in "${saved_modulepath//:/ }"; do
[[ -d "${item}" ]] || continue
subcommand_use "${item}"
done
}
##############################################################################