diff options
Diffstat (limited to '')
-rw-r--r-- | system/edit-config | 101 | ||||
-rwxr-xr-x | system/edit-config.in | 90 |
2 files changed, 36 insertions, 155 deletions
diff --git a/system/edit-config b/system/edit-config deleted file mode 100644 index 7c785a956..000000000 --- a/system/edit-config +++ /dev/null @@ -1,101 +0,0 @@ -#!/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="/etc/netdata" -[ -z "${NETDATA_STOCK_CONFIG_DIR}" ] && NETDATA_STOCK_CONFIG_DIR="/usr/lib/netdata/conf.d" - -if [ -z "${file}" ] -then - cat <<USAGE - -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: - -USAGE - - cd "${NETDATA_STOCK_CONFIG_DIR}" || exit 1 - ls >&2 -R *.conf */*.conf - exit 1 - -fi - -file_is_in_path() { - local file path real - file="${1}" - path="${2}" - - real="$(readlink -f "${file}")" - - # we don't have working readlink - [ -z "${real}" ] && return 0 - - if [ ! -z "${real}" ] && [ -z "$(echo "${real}" | grep -E "^${path}.*$")" ] - then - echo >&2 "File '${file}' is physically at '${real}', which is not in '${path}'. Aborting." - exit 1 - fi - - return 0 -} - -edit() { - echo >&2 "Editing '${1}' ..." - - # check we can edit - file_is_in_path "${1}" "${NETDATA_USER_CONFIG_DIR}" || exit 1 - - "${EDITOR}" "${1}" - exit $? -} - -copy_and_edit() { - # check we can copy - file_is_in_path "${NETDATA_STOCK_CONFIG_DIR}/${1}" "${NETDATA_STOCK_CONFIG_DIR}" || exit 1 - - 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 -if [ -f "${NETDATA_USER_CONFIG_DIR}/${file}" ] -then - edit "${NETDATA_USER_CONFIG_DIR}/${file}" -fi - -[ -f "${NETDATA_USER_CONFIG_DIR}/${file}" ] && edit "${NETDATA_USER_CONFIG_DIR}/${file}" -[ -f "${NETDATA_STOCK_CONFIG_DIR}/${file}" ] && copy_and_edit "${file}" - -echo >&2 "File '${file}' is not found in '${NETDATA_STOCK_CONFIG_DIR}'" -exit 1 diff --git a/system/edit-config.in b/system/edit-config.in index abfd5a454..050d97cde 100755 --- a/system/edit-config.in +++ b/system/edit-config.in @@ -4,18 +4,17 @@ file="${1}" -if [ "$(command -v editor)" ] ; then - EDITOR="${EDITOR-editor}" +if [ "$(command -v editor)" ]; then + EDITOR="${EDITOR-editor}" else - EDITOR="${EDITOR-vi}" + EDITOR="${EDITOR-vi}" fi -[ -z "${NETDATA_USER_CONFIG_DIR}" ] && NETDATA_USER_CONFIG_DIR="@configdir_POST@" +[ -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 <<USAGE +if [ -z "${file}" ]; then + cat << EOF USAGE: ${0} FILENAME @@ -30,72 +29,55 @@ USAGE: Available files in '${NETDATA_STOCK_CONFIG_DIR}' to copy and edit: -USAGE +EOF - cd "${NETDATA_STOCK_CONFIG_DIR}" || exit 1 - ls >&2 -R *.conf */*.conf - exit 1 + cd "${NETDATA_STOCK_CONFIG_DIR}" || exit 1 + ls >&2 -R ./*.conf ./*/*.conf + exit 1 fi -file_is_in_path() { - local file path real - file="${1}" - path="${2}" - - real="$(readlink -f "${file}")" - - # we don't have working readlink - [ -z "${real}" ] && return 0 - - if [ ! -z "${real}" ] && [ -z "$(echo "${real}" | grep -E "^${path}.*$")" ] - then - echo >&2 "File '${file}' is physically at '${real}', which is not in '${path}'. Aborting." - exit 1 - fi - - return 0 -} - edit() { - echo >&2 "Editing '${1}' ..." + echo >&2 "Editing '${1}' ..." - # check we can edit - file_is_in_path "${1}" "${NETDATA_USER_CONFIG_DIR}" || exit 1 + # check we can edit + if [ ! -w "${1}" ]; then + echo >&2 "Cannot write to ${1}! Aborting ..." + exit 1 + fi - "${EDITOR}" "${1}" - exit $? + "${EDITOR}" "${1}" + exit $? } copy_and_edit() { - # check we can copy - file_is_in_path "${NETDATA_STOCK_CONFIG_DIR}/${1}" "${NETDATA_STOCK_CONFIG_DIR}" || exit 1 - - 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}" + # 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 +if [ "${c1}" = "/" ] || [ "${c1}" = "." ]; then + echo >&2 "Please don't use filenames starting with '/' or '.'" + exit 1 fi # already exists -if [ -f "${NETDATA_USER_CONFIG_DIR}/${file}" ] -then - edit "${NETDATA_USER_CONFIG_DIR}/${file}" -fi +[ -f "${NETDATA_USER_CONFIG_DIR}/${file}" ] && edit "${NETDATA_USER_CONFIG_DIR}/${file}" -[ -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 |