mirror of
https://github.com/Pmodules/Pmodules.git
synced 2026-06-28 02:19:39 +02:00
modulecmd: use/unuse group while loading an overlay
This commit is contained in:
@@ -114,6 +114,7 @@ declare -A OverlayConfigKeys=(
|
||||
['default_relstage']='unstable'
|
||||
['layout']='Pmodules'
|
||||
['has_additional_modulepaths']='false'
|
||||
['groups']=''
|
||||
)
|
||||
|
||||
declare -A OverlayPathConfigKeys=(
|
||||
@@ -382,13 +383,13 @@ pm::read_config(){
|
||||
esac
|
||||
OverlayInfo[${ol_name}:${key}]="${value}"
|
||||
;;
|
||||
conflicts | excludes )
|
||||
conflicts | excludes | groups)
|
||||
yml::get_seq value yaml_input "${node}.${key}" '!!seq'
|
||||
local -a tmp_array=()
|
||||
readarray -t tmp_array <<<${value}
|
||||
local excludes=''
|
||||
printf -v excludes "%s:" "${tmp_array[@]}"
|
||||
OverlayInfo[${ol_name}:${key}]=$(${envsubst} <<<"${excludes%:}" )
|
||||
local -- tmp_str=''
|
||||
printf -v tmp_str "%s:" "${tmp_array[@]}"
|
||||
OverlayInfo[${ol_name}:${key}]=$(${envsubst} <<<"${tmp_str%:}" )
|
||||
;;
|
||||
path_config )
|
||||
yml::get_value value yaml_input "${node}.${key}" '!!seq'
|
||||
|
||||
@@ -1899,6 +1899,26 @@ subcommand_use() {
|
||||
MaskedGroups[${group}]="${ol_name}:${MaskedGroups[${group}]}"
|
||||
done
|
||||
fi
|
||||
if [[ -n "${OverlayInfo[${ol_name}:groups]}" ]]; then
|
||||
local -- grp_changes=':'
|
||||
local -a groups=()
|
||||
IFS=':' read -r -a groups <<< "${OverlayInfo[${ol_name}:groups]}"
|
||||
local -- group=''
|
||||
for group in "${groups[@]}"; do
|
||||
if [[ "${group:0:1}" == '~' ]]; then
|
||||
if [[ ":${UsedGroups}:" == *:${group:1}:* ]]; then
|
||||
subcommand_unuse "${group:1}"
|
||||
grp_changes+="${group}:"
|
||||
fi
|
||||
else
|
||||
if [[ ":${UsedGroups}:" != *:${group}:* ]]; then
|
||||
use_group "${group}"
|
||||
grp_changes+="${group}:"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
OverlayInfo[${ol_name}:grp_changes]="${grp_changes:0: -1}"
|
||||
fi
|
||||
scan_groups "${ol_name}"
|
||||
for group in ${UsedGroups//:/ }; do
|
||||
local dir="${OverlayInfo[${ol_name}:modulefiles_root]}/"
|
||||
@@ -2102,6 +2122,23 @@ subcommand_unuse() {
|
||||
std::prepend_path MODULEPATH "${dir}"
|
||||
done
|
||||
fi
|
||||
if [[ -n "${OverlayInfo[${ol_name}:groups]}" ]]; then
|
||||
local -a groups=()
|
||||
IFS=':' read -r -a groups <<< "${OverlayInfo[${ol_name}:grp_changes]}"
|
||||
local -- group=''
|
||||
for group in "${groups[@]}"; do
|
||||
if [[ "${group:0:1}" == '~' ]]; then
|
||||
if [[ ":${UsedGroups}:" != *:${group:1}:* ]]; then
|
||||
subcommand_use "${group:1}"
|
||||
fi
|
||||
else
|
||||
if [[ ":${UsedGroups}:" == *:${group}:* ]]; then
|
||||
unuse_group "${group}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
OverlayInfo[${ol_name}:grp_changes]=':'
|
||||
fi
|
||||
|
||||
# rebuild exclude list.
|
||||
# Note:
|
||||
|
||||
Reference in New Issue
Block a user