mirror of
https://github.com/Pmodules/Pmodules.git
synced 2026-06-29 18:59:39 +02:00
modulecmd: regex can now be used in overlay excludes
This commit is contained in:
+17
-12
@@ -51,7 +51,7 @@ declare -- ReleaseStages=':unstable:stable:deprecated:'
|
|||||||
# set releases which should be available after initialization
|
# set releases which should be available after initialization
|
||||||
declare -- DefaultReleaseStages='stable'
|
declare -- DefaultReleaseStages='stable'
|
||||||
|
|
||||||
declare -A OverlayExcludes=()
|
declare -- OverlayExcludes=''
|
||||||
declare -a UsedOverlays=()
|
declare -a UsedOverlays=()
|
||||||
declare -- PmFiles=''
|
declare -- PmFiles=''
|
||||||
declare -- ModulePathAppend=''
|
declare -- ModulePathAppend=''
|
||||||
@@ -1214,8 +1214,8 @@ get_available_modules() {
|
|||||||
# its sub-directories
|
# its sub-directories
|
||||||
local mod='' # module_name/module_version
|
local mod='' # module_name/module_version
|
||||||
while read -r mod; do
|
while read -r mod; do
|
||||||
|
[[ "${mod}" =~ ${OverlayExcludes} ]] && continue
|
||||||
local name="${mod%/*}"
|
local name="${mod%/*}"
|
||||||
[[ -v OverlayExcludes[${name}] ]] && continue
|
|
||||||
local add='no'
|
local add='no'
|
||||||
if [[ -n "${ol}" && "${ol}" != 'none' ]]; then
|
if [[ -n "${ol}" && "${ol}" != 'none' ]]; then
|
||||||
# module is in an overlay
|
# module is in an overlay
|
||||||
@@ -1794,13 +1794,15 @@ subcommand_use() {
|
|||||||
UsedOverlays=( "${ol_name}" "${UsedOverlays[@]}" )
|
UsedOverlays=( "${ol_name}" "${UsedOverlays[@]}" )
|
||||||
OverlayInfo[${ol_name}:used]='yes'
|
OverlayInfo[${ol_name}:used]='yes'
|
||||||
|
|
||||||
local excludes=()
|
local -a excludes=()
|
||||||
local item
|
|
||||||
IFS=':' read -r -a excludes <<< "${OverlayInfo[${ol_name}:excludes]}"
|
IFS=':' read -r -a excludes <<< "${OverlayInfo[${ol_name}:excludes]}"
|
||||||
|
local -- item=''
|
||||||
for item in "${excludes[@]}"; do
|
for item in "${excludes[@]}"; do
|
||||||
OverlayExcludes[${item}]=1
|
OverlayExcludes+="${item}|"
|
||||||
done
|
done
|
||||||
|
if [[ -n "${OverlayExcludes}" ]]; then
|
||||||
|
OverlayExcludes="${OverlayExcludes:0: -1}"
|
||||||
|
fi
|
||||||
scan_groups "${UsedOverlays[@]}"
|
scan_groups "${UsedOverlays[@]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1967,17 +1969,19 @@ subcommand_unuse() {
|
|||||||
# Note:
|
# Note:
|
||||||
# A module might be excluded in multiple overlays. So, we cannot
|
# A module might be excluded in multiple overlays. So, we cannot
|
||||||
# just remove the excludes from the overlay to unuse.
|
# just remove the excludes from the overlay to unuse.
|
||||||
local excludes=()
|
OverlayExcludes=''
|
||||||
OverlayExcludes=()
|
local -- ol=''
|
||||||
local ol
|
local -a excludes=()
|
||||||
local item
|
local -- item=''
|
||||||
for ol in "${UsedOverlays[@]}"; do
|
for ol in "${UsedOverlays[@]}"; do
|
||||||
IFS=':' read -r -a excludes <<< "${OverlayInfo[${ol}:excludes]}"
|
IFS=':' read -r -a excludes <<< "${OverlayInfo[${ol}:excludes]}"
|
||||||
for item in "${excludes[@]}"; do
|
for item in "${excludes[@]}"; do
|
||||||
OverlayExcludes[${item}]=1
|
OverlayExcludes+="${item}|"
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
if [[ -n "${OverlayExcludes}" ]]; then
|
||||||
|
OverlayExcludes="${OverlayExcludes:0: -1}"
|
||||||
|
fi
|
||||||
# remove additional directories added by overlay
|
# remove additional directories added by overlay
|
||||||
if [[ -v OverlayInfo[${ol_name}:modulepath] && \
|
if [[ -v OverlayInfo[${ol_name}:modulepath] && \
|
||||||
-n "${OverlayInfo[${ol_name}:modulepath]}" ]]; then
|
-n "${OverlayInfo[${ol_name}:modulepath]}" ]]; then
|
||||||
@@ -2169,6 +2173,7 @@ pmodules_init() {
|
|||||||
init_overlay_vars() {
|
init_overlay_vars() {
|
||||||
declare -ag UsedOverlays=( 'base' )
|
declare -ag UsedOverlays=( 'base' )
|
||||||
OverlayInfo['base:used']='yes'
|
OverlayInfo['base:used']='yes'
|
||||||
|
declare -g OverlayExcludes=''
|
||||||
}
|
}
|
||||||
|
|
||||||
init_manpath() {
|
init_manpath() {
|
||||||
|
|||||||
Reference in New Issue
Block a user