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