diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 11:08:07 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 11:08:07 +0000 |
commit | c69cb8cc094cc916adbc516b09e944cd3d137c01 (patch) | |
tree | f2878ec41fb6d0e3613906c6722fc02b934eeb80 /system/edit-config.in | |
parent | Initial commit. (diff) | |
download | netdata-c69cb8cc094cc916adbc516b09e944cd3d137c01.tar.xz netdata-c69cb8cc094cc916adbc516b09e944cd3d137c01.zip |
Adding upstream version 1.29.3.upstream/1.29.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'system/edit-config.in')
-rwxr-xr-x | system/edit-config.in | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/system/edit-config.in b/system/edit-config.in new file mode 100755 index 0000000..050d97c --- /dev/null +++ b/system/edit-config.in @@ -0,0 +1,83 @@ +#!/usr/bin/env sh + +[ -f /etc/profile ] && . /etc/profile + +file="${1}" + +if [ "$(command -v editor)" ]; then + EDITOR="${EDITOR-editor}" +else + EDITOR="${EDITOR-vi}" +fi + +[ -z "${NETDATA_USER_CONFIG_DIR}" ] && NETDATA_USER_CONFIG_DIR="@configdir_POST@" +[ -z "${NETDATA_STOCK_CONFIG_DIR}" ] && NETDATA_STOCK_CONFIG_DIR="@libconfigdir_POST@" + +if [ -z "${file}" ]; then + cat << EOF + +USAGE: + ${0} FILENAME + + Copy and edit the stock config file named: FILENAME + if FILENAME is already copied, it will be edited as-is. + + The EDITOR shell variable is used to define the editor to be used. + + Stock config files at: '${NETDATA_STOCK_CONFIG_DIR}' + User config files at: '${NETDATA_USER_CONFIG_DIR}' + + Available files in '${NETDATA_STOCK_CONFIG_DIR}' to copy and edit: + +EOF + + cd "${NETDATA_STOCK_CONFIG_DIR}" || exit 1 + ls >&2 -R ./*.conf ./*/*.conf + exit 1 + +fi + +edit() { + echo >&2 "Editing '${1}' ..." + + # check we can edit + if [ ! -w "${1}" ]; then + echo >&2 "Cannot write to ${1}! Aborting ..." + exit 1 + fi + + "${EDITOR}" "${1}" + exit $? +} + +copy_and_edit() { + # check we can copy + if [ ! -w "${NETDATA_USER_CONFIG_DIR}" ]; then + echo >&2 "Cannot write to ${NETDATA_USER_CONFIG_DIR}! Aborting ..." + exit 1 + fi + + if [ ! -f "${NETDATA_USER_CONFIG_DIR}/${1}" ]; then + echo >&2 "Copying '${NETDATA_STOCK_CONFIG_DIR}/${1}' to '${NETDATA_USER_CONFIG_DIR}/${1}' ... " + cp -p "${NETDATA_STOCK_CONFIG_DIR}/${1}" "${NETDATA_USER_CONFIG_DIR}/${1}" || exit 1 + fi + + edit "${NETDATA_USER_CONFIG_DIR}/${1}" +} + +# make sure it is not absolute filename +c1="$(echo "${file}" | cut -b 1)" +if [ "${c1}" = "/" ] || [ "${c1}" = "." ]; then + echo >&2 "Please don't use filenames starting with '/' or '.'" + exit 1 +fi + +# already exists +[ -f "${NETDATA_USER_CONFIG_DIR}/${file}" ] && edit "${NETDATA_USER_CONFIG_DIR}/${file}" + +# stock config is valid, copy and edit +[ -f "${NETDATA_STOCK_CONFIG_DIR}/${file}" ] && copy_and_edit "${file}" + +# no such config found +echo >&2 "File '${file}' is not found in '${NETDATA_STOCK_CONFIG_DIR}'" +exit 1 |