#!/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