modulecmd: add overlay info to output of sub-command 'search'

This commit is contained in:
2022-06-09 14:48:39 +02:00
parent 1c39e8ded0
commit d5ab3dd209
+27 -19
View File
@@ -945,6 +945,7 @@ get_available_modules() {
# implementations.
local entries=$(echo *)
[[ -n ${entries} ]] || continue
local mod='' # module_name/module_version
while read mod; do
local add='no'
if [[ -n "${ol}" ]]; then
@@ -980,7 +981,7 @@ get_available_modules() {
"${mod}"
[[ :${used_rel_stages}: =~ :${rel_stage}: ]] || continue
mods+=( "${mod}" ${rel_stage} "${dir}/${mod}" )
mods+=( "${mod}" ${rel_stage} "${dir}/${mod}" "${ol}" )
dict[${mod}]=1
done < <(${find} -L ${entries} \
\( -type f -o -type l \) \
@@ -1073,7 +1074,7 @@ find_module() {
"${dir}" \
"${mod}"
std::upvar $2 "${rel_stage}"
[[ :${release}: =~ :${UsedReleaseStages}: ]] && \
[[ :${rel_stage}: =~ :${UsedReleaseStages}: ]] && \
return 0
done
done
@@ -1144,7 +1145,7 @@ subcommand_avail() {
terse_output() {
output_header "$1"
local -i i=0
for (( i=0; i<${#mods[@]}; i+=3 )); do
for (( i=0; i<${#mods[@]}; i+=4 )); do
local mod=${mods[i]}
local rel_stage=${mods[i+1]}
case ${rel_stage} in
@@ -1162,7 +1163,7 @@ subcommand_avail() {
#......................................................................
machine_output() {
for (( i=0; i<${#mods[@]}; i+=3 )); do
for (( i=0; i<${#mods[@]}; i+=4 )); do
printf "%-20s\t%s\n" "${mods[i]}" "${mods[i+1]}" 1>&2
done
}
@@ -1171,7 +1172,7 @@ subcommand_avail() {
# :FIXME: for the time being, this is the same as terse_output!
long_output() {
output_header "$1"
for (( i=0; i<${#mods[@]}; i+=3 )); do
for (( i=0; i<${#mods[@]}; i+=4 )); do
local mod=${mods[i]}
local rel_stage=${mods[i+1]}
case ${rel_stage} in
@@ -1194,7 +1195,7 @@ subcommand_avail() {
local -a available_modules=()
local mod=''
local -i max_length=1
for ((i=0; i<${#mods[@]}; i+=3)); do
for ((i=0; i<${#mods[@]}; i+=4)); do
if [[ ${verbosity_lvl} == 'verbose' ]]; then
local rel_stage=${mods[i+1]}
case ${rel_stage} in
@@ -2141,7 +2142,7 @@ subcommand_search() {
local fmt=''
print_default() {
fmt="%-${max_len_modulename}s %-10s %-12s %-s"
fmt="%-${max_len_modulename}s %-10s %-12s %-12s %-s"
if [[ ${opt_print_header} == 'yes' ]]; then
func_print_header='print_header_default'
else
@@ -2152,7 +2153,7 @@ subcommand_search() {
print_header_default() {
std::info ''
std::info "${fmt}" "Module" "Rel.stage" "Group" "Requires"
std::info "${fmt}" "Module" "Rel.stage" "Group" "Overlay" "Requires"
std::info '-%.0s' $(seq 1 ${cols})
}
@@ -2165,12 +2166,12 @@ subcommand_search() {
std::info "${str}"
}
if [[ "${opt_wrap}" == 'no' ]]; then
local deps="${@:5}"
local str=$(printf "${fmt}" "$1" "$2" "$3" "${deps[@]}")
local deps="${@:6}"
local str=$(printf "${fmt}" "$1" "$2" "$3" "$5" "${deps[@]}")
write_line "${str}"
else
local deps=( "${@:5}" )
local str=$(printf "${fmt}" "$1" "$2" "$3" "${deps[0]}")
local deps=( "${@:6}" )
local str=$(printf "${fmt}" "$1" "$2" "$3" "$5" "${deps[0]}")
for (( i = 1; i < ${#deps[@]}; i++ )); do
if (( ${#str} + ${#deps[i]} + 1 <= cols )); then
str+=" ${deps[i]}"
@@ -2184,21 +2185,26 @@ subcommand_search() {
}
print_verbose() {
fmt="%-${max_len_modulename}s %-10s %-12s %-s"
fmt="%-${max_len_modulename}s %-12s %-14s %-s"
func_print_header='print_header_verbose'
func_print_line='print_line_verbose'
}
print_header_verbose() {
std::info ''
std::info "${fmt}" "Module" "Rel.stage" "Group" "Dependencies/Modulefile"
std::info '-%.0s' $(seq 1 ${cols})
#std::info "${fmt}" "Module" "Rel.stage" "Group" "Overlay" "Dependencies/Modulefile"
#std::info '-%.0s' $(seq 1 ${cols})
}
print_line_verbose() {
local deps="${@:5}"
std::info "${fmt}" "$1" "$2" "$3" "dependencies: ${deps}"
std::info "${fmt}" "" "" "" "modulefile: $4"
local deps="${@:6}"
[[ -z ${deps} ]] && deps="(none)"
std::info "$1:"
std::info " release stage: $2"
std::info " group: $3"
std::info " overlay: $5"
std::info " modulefile: $4"
std::info " dependencies: ${deps}"
}
# print full modulefile names only
@@ -2282,10 +2288,11 @@ subcommand_search() {
"${opt_use_rel_stages}" \
"${modulepath[@]}" \
for (( i=0; i<${#mods[@]}; i+=3 )); do
for (( i=0; i<${#mods[@]}; i+=4 )); do
local name=${mods[i]}
local rel_stage=${mods[i+1]}
local modulefile=${mods[i+2]}
local ol=${mods[i+3]}
if (( ${#name} > max_len_modulename)); then
max_len_modulename=${#name}
@@ -2313,6 +2320,7 @@ subcommand_search() {
fi
echo ${name} ${rel_stage} ${group} ${modulefile} \
${ol} \
${deps[@]} >> "${tmpfile}"
done
done