mirror of
https://github.com/pi-hole/pi-hole.git
synced 2024-11-15 10:43:55 +00:00
Adjust addOrEditKeyValPair to optionally take two or three arguments (adjust test to suit)
Add a removeKey function with test update webpage.sh to reference functions in utils.sh (this can likely be abstracted/refactored further) Signed-off-by: Adam Warner <me@adamwarner.co.uk>
This commit is contained in:
parent
ff5e788889
commit
48138d32b6
3 changed files with 73 additions and 23 deletions
|
@ -15,7 +15,10 @@
|
|||
# - New functions must have a test added for them in test/test_any_utils.py
|
||||
|
||||
#######################
|
||||
# Takes three arguments key, value, and file.
|
||||
# Takes either
|
||||
# - Three arguments: key, value, and file.
|
||||
# - Two arguments: key, and file
|
||||
#
|
||||
# Checks the target file for the existence of the key
|
||||
# - If it exists, it changes the value
|
||||
# - If it does not exist, it adds the value
|
||||
|
@ -25,13 +28,46 @@
|
|||
#######################
|
||||
addOrEditKeyValPair() {
|
||||
local key="${1}"
|
||||
local value="${2}"
|
||||
local file="${3}"
|
||||
if grep -q "^${key}=" "${file}"; then
|
||||
sed -i "/^${key}=/c\\${key}=${value}" "${file}"
|
||||
else
|
||||
echo "${key}=${value}" >> "${file}"
|
||||
local value
|
||||
local file
|
||||
|
||||
# If two arguments have been passed, then the second one is the file - there is no value
|
||||
if [ $# -lt 3 ]; then
|
||||
file="${2}"
|
||||
else
|
||||
value="${2}"
|
||||
file="${3}"
|
||||
fi
|
||||
|
||||
if [[ "${value}" != "" ]]; then
|
||||
# value has a value, so it is a key pair
|
||||
if grep -q "^${key}=" "${file}"; then
|
||||
# Key already exists in file, modify the value
|
||||
sed -i "/^${key}=/c\\${key}=${value}" "${file}"
|
||||
else
|
||||
# Key does not already exist, add it and it's value
|
||||
echo "${key}=${value}" >> "${file}"
|
||||
fi
|
||||
else
|
||||
# value has no value, so it is just a key. Add it if it does not already exist
|
||||
if ! grep -q "^${key}" "${file}"; then
|
||||
# Key does not exist, add it.
|
||||
echo "${key}" >> "${file}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
#######################
|
||||
# Takes two arguments key, and file.
|
||||
# Deletes a key from target file
|
||||
#
|
||||
# Example usage:
|
||||
# removeKey "PIHOLE_DNS_1" "/etc/pihole/setupVars.conf"
|
||||
#######################
|
||||
removeKey() {
|
||||
local key="${1}"
|
||||
local file="${2}"
|
||||
sed -i "/^${key}/d" "${file}"
|
||||
}
|
||||
|
||||
#######################
|
||||
|
|
|
@ -26,6 +26,9 @@ readonly PI_HOLE_FILES_DIR="/etc/.pihole"
|
|||
PH_TEST="true"
|
||||
source "${PI_HOLE_FILES_DIR}/automated install/basic-install.sh"
|
||||
|
||||
readonly utilsfile="/opt/pihole/utils.sh"
|
||||
source "${utilsfile}"
|
||||
|
||||
coltable="/opt/pihole/COL_TABLE"
|
||||
if [[ -f ${coltable} ]]; then
|
||||
source ${coltable}
|
||||
|
@ -51,41 +54,35 @@ Options:
|
|||
}
|
||||
|
||||
add_setting() {
|
||||
echo "${1}=${2}" >> "${setupVars}"
|
||||
addOrEditKeyValPair "${1}" "${2}" "${setupVars}"
|
||||
}
|
||||
|
||||
delete_setting() {
|
||||
sed -i "/^${1}/d" "${setupVars}"
|
||||
removeKey "${1}" "${setupVars}"
|
||||
}
|
||||
|
||||
change_setting() {
|
||||
delete_setting "${1}"
|
||||
add_setting "${1}" "${2}"
|
||||
addOrEditKeyValPair "${1}" "${2}" "${setupVars}"
|
||||
}
|
||||
|
||||
addFTLsetting() {
|
||||
echo "${1}=${2}" >> "${FTLconf}"
|
||||
addOrEditKeyValPair "${1}" "${2}" "${FTLconf}"
|
||||
}
|
||||
|
||||
deleteFTLsetting() {
|
||||
sed -i "/^${1}/d" "${FTLconf}"
|
||||
removeKey "${1}" "${FTLconf}"
|
||||
}
|
||||
|
||||
changeFTLsetting() {
|
||||
deleteFTLsetting "${1}"
|
||||
addFTLsetting "${1}" "${2}"
|
||||
addOrEditKeyValPair "${1}" "${2}" "${FTLconf}"
|
||||
}
|
||||
|
||||
add_dnsmasq_setting() {
|
||||
if [[ "${2}" != "" ]]; then
|
||||
echo "${1}=${2}" >> "${dnsmasqconfig}"
|
||||
else
|
||||
echo "${1}" >> "${dnsmasqconfig}"
|
||||
fi
|
||||
addOrEditKeyValPair "${1}" "${2}" "${dnsmasqconfig}"
|
||||
}
|
||||
|
||||
delete_dnsmasq_setting() {
|
||||
sed -i "/^${1}/d" "${dnsmasqconfig}"
|
||||
removeKey "${1}" "${dnsmasqconfig}"
|
||||
}
|
||||
|
||||
SetTemperatureUnit() {
|
||||
|
@ -183,7 +180,7 @@ ProcessDNSSettings() {
|
|||
fi
|
||||
|
||||
delete_dnsmasq_setting "dnssec"
|
||||
delete_dnsmasq_setting "trust-anchor="
|
||||
delete_dnsmasq_setting "trust-anchor"
|
||||
|
||||
if [[ "${DNSSEC}" == true ]]; then
|
||||
echo "dnssec
|
||||
|
|
|
@ -6,11 +6,28 @@ def test_key_val_replacement_works(host):
|
|||
addOrEditKeyValPair "KEY_TWO" "value2" "./testoutput"
|
||||
addOrEditKeyValPair "KEY_ONE" "value3" "./testoutput"
|
||||
addOrEditKeyValPair "KEY_FOUR" "value4" "./testoutput"
|
||||
addOrEditKeyValPair "KEY_FIVE_NO_VALUE" "./testoutput"
|
||||
addOrEditKeyValPair "KEY_FIVE_NO_VALUE" "./testoutput"
|
||||
''')
|
||||
output = host.run('''
|
||||
cat ./testoutput
|
||||
''')
|
||||
expected_stdout = 'KEY_ONE=value3\nKEY_TWO=value2\nKEY_FOUR=value4\n'
|
||||
expected_stdout = 'KEY_ONE=value3\nKEY_TWO=value2\nKEY_FOUR=value4\nKEY_FIVE_NO_VALUE\n'
|
||||
assert expected_stdout == output.stdout
|
||||
|
||||
def test_key_val_removal_works(host):
|
||||
''' Confirms addOrEditKeyValPair provides the expected output '''
|
||||
host.run('''
|
||||
source /opt/pihole/utils.sh
|
||||
addOrEditKeyValPair "KEY_ONE" "value1" "./testoutput"
|
||||
addOrEditKeyValPair "KEY_TWO" "value2" "./testoutput"
|
||||
addOrEditKeyValPair "KEY_THREE" "value3" "./testoutput"
|
||||
removeKey "KEY_TWO" "./testoutput"
|
||||
''')
|
||||
output = host.run('''
|
||||
cat ./testoutput
|
||||
''')
|
||||
expected_stdout = 'KEY_ONE=value1\nKEY_THREE=value3\n'
|
||||
assert expected_stdout == output.stdout
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue