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/edit

93 lines
2.4 KiB

#!/bin/bash
# Purpose: edit ngcp-config's configuration YML file
################################################################################
set -e
set -u
# support testsuite
FUNCTIONS="${FUNCTIONS:-/usr/share/ngcp-ngcpcfg/functions/}"
HELPER="${HELPER:-/usr/share/ngcp-ngcpcfg/helper/}"
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
if [ -z "${EDITOR:-}" ] ; then
if [ -x "/usr/bin/vim" ]; then
EDITOR="/usr/bin/vim"
else
printf "Error: Missing \$EDITOR environmanent variable. Exiting.\n" >&2
exit 1
fi
fi
# main script
RC=0
file=""
if [ "${#:-}" -ge 1 ] ; then
file=$1
# Use magic mapper if no real file provided
if [ ! -r "${file}" ]; then
case ${file,,} in
1|config|config.yml)
if [ -e "${SITES_DIR}/current/config.yml" ]; then
file="${SITES_DIR}/current/config.yml"
else
file="${NGCPCTL_MAIN}/config.yml"
fi
;;
2|network|network.yml)
if [ -e "${SITES_DIR}/current/network.yml" ]; then
file="${SITES_DIR}/current/network.yml"
else
file="${NGCPCTL_MAIN}/network.yml"
fi
;;
3|constants|constants.yml)
if [ -e "${SITES_DIR}/current/constants.yml" ]; then
file="${SITES_DIR}/current/constants.yml"
else
file="${NGCPCTL_MAIN}/constants.yml"
fi
;;
*)
echo "Error: Unknown choice '${file}'. Aborting." >&2
exit 1
;;
esac
fi
else
# Get the list of configs in static order to be constant over the time
# and process the main YML configs first: config.yml maintenance.yml
# network.yml constants.yml
# NOTE: the file are loaded/merged into ngcpcfg in different order!
declare -a CONFIGS
for f in ${NGCPCTL_CONFIG:?} ${MAINTENANCE_CONFIG:?} ${NETWORK_CONFIG:?} ${CONSTANTS_CONFIG:?} ${NODE_CONFIG:-} ${PAIR_CONFIG:-} ${HOST_CONFIG:-} ${LOCAL_CONFIG:-} "${EXTRA_CONFIG_FILES[@]}" ; do
if [ -r "$f" ] ; then
CONFIGS+=("${f}")
fi
done
select f in "${CONFIGS[@]}" ; do
if [[ -z "${f}" ]]; then
echo "Exit as requested."
exit 0
else
file=$f
break
fi
done
fi
"${EDITOR}" "${file}" || RC=$?
exit "$RC"
## END OF FILE #################################################################