mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
initscript functions: add readhash
To avoid the usage of eval and to store the config in an key value array, we introduce an new function. The tests only check if we read the correct value to the correct variable. One comment on the implementation as this has created some headache: >From https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins "When used in a function, declare makes each name local, as with the local command, unless the -g option is used." So we need to use -g here Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
committed by
Michael Tremer
parent
acde9c1a13
commit
96bb3ba8b8
@@ -890,3 +890,18 @@ volume_fs_type() {
|
||||
|
||||
stat -f --format="%T" ${1}
|
||||
}
|
||||
|
||||
readhash() {
|
||||
local array="${1}"
|
||||
local file="${2}"
|
||||
|
||||
declare -A -g "${array}"
|
||||
|
||||
local line
|
||||
while read -r line; do
|
||||
local key="${line%=*}"
|
||||
local val="${line#*=}"
|
||||
|
||||
printf -v "${array}[${key}]" "%s" "${val}"
|
||||
done < "${file}"
|
||||
}
|
||||
|
||||
17
tests/src/initscripts/system/functions/data/1
Normal file
17
tests/src/initscripts/system/functions/data/1
Normal file
@@ -0,0 +1,17 @@
|
||||
CONFIG_TYPE=3
|
||||
GREEN_DEV=green0
|
||||
GREEN_MACADDR=00:c0:08:8a:a0:47
|
||||
GREEN_DRIVER=r8175
|
||||
RED_DEV=red0
|
||||
RED_MACADDR=00:c0:08:8a:a0:56
|
||||
RED_DRIVER=r8283
|
||||
BLUE_DEV='blue0 net0'
|
||||
BLUE_MACADDR=bc:30:7d:58:6b:e3
|
||||
BLUE_DRIVER=rt2800
|
||||
RED_DHCP_HOSTNAME=ipfire
|
||||
RED_DHCP_FORCE_MTU=
|
||||
RED_ADDRESS=0.0.0.0
|
||||
RED_NETMASK=0.0.0.0
|
||||
RED_TYPE=PPPOE
|
||||
RED_NETADDRESS=0.0.0.0
|
||||
|
||||
16
tests/src/initscripts/system/functions/test.sh
Executable file
16
tests/src/initscripts/system/functions/test.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
SCRIPT_PATH="$(dirname "$(readlink -f "$0")")"
|
||||
|
||||
ROOT="$(readlink -f "${SCRIPT_PATH}/../../../../..")"
|
||||
|
||||
. ${ROOT}/tests/lib.sh
|
||||
|
||||
. ${ROOT}/src/initscripts/system/functions
|
||||
|
||||
# read the date in
|
||||
readhash "CONFIG" "${SCRIPT_PATH}/data/1"
|
||||
|
||||
# test if we read the correct data
|
||||
test_value_in_array "CONFIG" "RED_DHCP_HOSTNAME" "ipfire"
|
||||
test_value_in_array "CONFIG" "BLUE_MACADDR" "bc:30:7d:58:6b:e3"
|
||||
Reference in New Issue
Block a user