mirror of
https://github.com/servalproject/serval-dna.git
synced 2024-12-19 05:07:56 +00:00
Improve Rhizome testdefs: add rhizome_list_unpack()
Makes all the output of a "rhizome list" command available in shell variables
This commit is contained in:
parent
7caebb97be
commit
4d54f55906
@ -78,6 +78,63 @@ assert_rhizome_list() {
|
||||
rhizome_list_file_count=$(( $(replayStdout | wc -l) - 2 ))
|
||||
}
|
||||
|
||||
# Parse the standard output produced by the immediately preceding "rhizome list"
|
||||
# command into the following shell variables:
|
||||
# NCOLS the number of columns
|
||||
# NROWS the number of data rows (not counting headers)
|
||||
# HEADER[c] the C-th header label, 0 <= C <= NCOLS-1
|
||||
# <label>[R] where <label> is a header label with all non-alphanumerics
|
||||
# replaced by underscore '_' and all alphas converted to upper case, eg,
|
||||
# .author -> _AUTHOR, is the value of that column in the R-th row, 0 <=
|
||||
# R < NROWS
|
||||
#
|
||||
# Warning: overwrites existing shell variables. Names of overwritten shell
|
||||
# variables are derived directly from the output of rhizome list, so cannot be
|
||||
# controlled. If a prefix is supplied, all variables are prefixed with that.
|
||||
rhizome_list_unpack() {
|
||||
local prefix="$1"
|
||||
{
|
||||
local n
|
||||
read n
|
||||
eval ${prefix}NCOLS=\"\$n\"
|
||||
declare -a ${prefix}HEADER
|
||||
local -a header
|
||||
local oIFS="$IFS"
|
||||
IFS=:
|
||||
read -r -a header
|
||||
IFS="$oIFS"
|
||||
eval ${prefix}HEADER="(\"\${header[@]}\")"
|
||||
local hdr
|
||||
local -a colvars=()
|
||||
for hdr in "${header[@]}"; do
|
||||
case "$hdr" in
|
||||
id)
|
||||
hdr=BID;;
|
||||
*)
|
||||
hdr="${hdr//[^A-Za-z0-9_]/_}"
|
||||
# hdr="${hdr^^*}" would do in Bash-4.0 and later
|
||||
hdr="$(echo "$hdr" | sed -e 's/.*/\U&/')"
|
||||
;;
|
||||
esac
|
||||
colvars+=("$hdr")
|
||||
done
|
||||
local -a row
|
||||
IFS=:
|
||||
local i=0
|
||||
while eval read -r -a row; do
|
||||
local j=0
|
||||
local val
|
||||
for val in "${row[@]}"; do
|
||||
eval ${prefix}${colvars[$j]}[$i]=\"\$val\"
|
||||
let ++j
|
||||
done
|
||||
let ++i
|
||||
done
|
||||
IFS="$oIFS"
|
||||
eval ${prefix}NROWS=$i
|
||||
} < "$TFWSTDOUT"
|
||||
}
|
||||
|
||||
rhizome_list_dump() {
|
||||
local ncols
|
||||
local -a headers
|
||||
|
Loading…
Reference in New Issue
Block a user