1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-06 00:58:48 +03:00

tests: bash-fu for lvmconf

Sqeeze about 0.1s out of every created conf and use internal
bash associative arrays instead of lot of command forking
This commit is contained in:
Zdenek Kabelac 2015-04-29 12:26:12 +02:00
parent 923902013c
commit c5b4327f3d

View File

@ -785,16 +785,29 @@ EOF
echo "$v"
done >> "$config_values"
local s
for s in $(cut -f1 -d/ "$config_values" | sort | uniq); do
echo "$s {"
local k
for k in $(grep ^"$s"/ "$config_values" | cut -f1 -d= | sed -e 's, *$,,' | sort | uniq); do
grep "^$k" "$config_values" | tail -n 1 | sed -e "s,^$s/, ,"
done
echo "}"
echo
done | tee "$config" | sed -e "s,^,## LVMCONF: ,"
declare -A CONF
local sec
local last_sec
# read sequential list and put into associative array
while IFS=$IFS_NL read -r v; do
# trim white-space-chars via echo when inserting
CONF[$(echo ${v%%=*})]=${v##*=}
done < "$config_values"
# sort by section and iterate through them
printf "%s\n" ${!CONF[@]} | sort | while read -r v ; do
sec=${v%%/*} # split on section'/'param_name
test "$sec" = "$last_sec" || {
test -z "$last_sec" || echo "}"
echo "$sec {"
last_sec=$sec
}
echo " ${v#*/} =${CONF[$v]}"
done > "$config"
echo "}" >> "$config"
sed -e "s,^,## LVMCONF: ," "$config"
}
lvmconf() {