You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcpcfg/scripts/del

74 lines
1.6 KiB

#!/bin/bash
# Purpose: delete config option from YAML file
################################################################################
set -e
set -u
# support testsuite
FUNCTIONS="${FUNCTIONS:-/usr/share/ngcp-ngcpcfg/functions/}"
HELPER="${HELPER:-/usr/share/ngcp-ngcpcfg/helper/}"
SCRIPTS="${SCRIPTS:-/usr/share/ngcp-ngcpcfg/scripts/}"
if ! [ -r "${FUNCTIONS}"/main ] ; then
printf "Error: %s/main could not be read. Exiting.\n" "${FUNCTIONS}">&2
exit 1
fi
# shellcheck disable=SC1090
. "${FUNCTIONS}"/main
## functions {{{
help() {
echo "Usage: ngcpcfg del [<options>] <file> <option>"
echo "Example: ngcpcfg del /etc/ngcp-config/config.yml unnecessary.option"
echo "Options:"
echo " --diff: show difference(s) for the applied changes"
}
## }}}
RC=0
b_show_diff=false
while [ -n "${1:-}" ]; do
case "$1" in
--diff)
b_show_diff=true
shift
;;
--*)
log_error "unsupported option '$1'. Exiting."
help >&2
exit 1
;;
*)
break
;;
esac
done
if [ "${#:-}" != "2" ]; then
help >&2
exit 1
fi
file="$1"
option="$2"
[ -f "${file}" ] || (log_error "missing ${file}. Exiting." ; exit 1)
[ -z "${option}" ] && ( log_error "missing option to set. Exiting." ; exit 1)
log_debug "Deleting option '${option}' from '${file}'"
log_debug "${HELPER}/del-value '${file}' '${option}' || RC=\$?"
"${HELPER}/del-value" "${file}" "${option}" || RC=$?
if [ "${RC}" = "0" ] && "${b_show_diff:-false}"; then
log_debug "${SCRIPTS}/diff || true"
"${SCRIPTS}"/diff || true
fi
exit ${RC:-0}
## END OF FILE #################################################################