+# make sure we cd to the working directory
+cd "${REINSTALL_PWD}" || exit 1
+
+# make sure there is .git here
+[ \${force} -eq 0 -a ! -d .git ] && echo >&2 "No git structures found at: ${REINSTALL_PWD} (use -f for force re-install)" && exit 1
+
+# signal netdata to start saving its database
+# this is handy if your database is big
+pids=\$(pidof netdata)
+[ ! -z "\${pids}" ] && kill -USR1 \${pids}
+
+tmp=
+if [ -t 2 ]
+ then
+ # we are running on a terminal
+ # open fd 3 and send it to stderr
+ exec 3>&2
+else
+ # we are headless
+ # create a temporary file for the log
+ tmp=\$(mktemp /tmp/netdata-updater.log.XXXXXX)
+ # open fd 3 and send it to tmp
+ exec 3>\${tmp}
+fi
+
+info() {
+ echo >&3 "\$(date) : INFO: " "\${@}"
+}
+
+emptyline() {
+ echo >&3
+}
+
+error() {
+ echo >&3 "\$(date) : ERROR: " "\${@}"
+}
+
+# this is what we will do if it fails (head-less only)
+failed() {
+ error "FAILED TO UPDATE NETDATA : \${1}"
+
+ if [ ! -z "\${tmp}" ]
+ then
+ cat >&2 "\${tmp}"
+ rm "\${tmp}"
+ fi
+ exit 1
+}
+
+get_latest_commit_id() {
+ git log -1 2>&3 |\\
+ grep ^commit 2>&3 |\\
+ head -n 1 2>&3 |\\
+ cut -d ' ' -f 2 2>&3
+}
+
+update() {
+ [ -z "\${tmp}" ] && info "Running on a terminal - (this script also supports running headless from crontab)"
+
+ emptyline
+
+ if [ -d .git ]
+ then
+ info "Updating netdata source from github..."
+
+ last_commit="\$(get_latest_commit_id)"
+ [ \${force} -eq 0 -a -z "\${last_commit}" ] && failed "CANNOT GET LAST COMMIT ID (use -f for force re-install)"
+
+ git pull >&3 2>&3 || failed "CANNOT FETCH LATEST SOURCE (use -f for force re-install)"
+
+ new_commit="\$(get_latest_commit_id)"
+ if [ \${force} -eq 0 ]
+ then
+ [ -z "\${new_commit}" ] && failed "CANNOT GET NEW LAST COMMIT ID (use -f for force re-install)"
+ [ "\${new_commit}" = "\${last_commit}" ] && info "Nothing to be done! (use -f to force re-install)" && exit 0
+ fi
+ elif [ \${force} -eq 0 ]
+ then
+ failed "CANNOT FIND GIT STRUCTURES IN \$(pwd) (use -f for force re-install)"
+ fi
+
+ emptyline
+ info "Re-installing netdata..."
+ ${REINSTALL_COMMAND// --dont-wait/} --dont-wait >&3 2>&3 || failed "FAILED TO COMPILE/INSTALL NETDATA"
+
+ [ ! -z "\${tmp}" ] && rm "\${tmp}" && tmp=
+ return 0
+}
+
+# the installer updates this script - so we run and exit in a single line
+update && exit 0
+###############################################################################
+###############################################################################
+REINSTALL
+ chmod 755 netdata-updater.sh.new
+ mv -f netdata-updater.sh.new netdata-updater.sh
+ echo >&2 "Update script generated : ${TPUT_GREEN}${TPUT_BOLD}./netdata-updater.sh${TPUT_RESET}"
+ echo >&2
+ echo >&2 "${TPUT_DIM}${TPUT_BOLD}netdata-updater.sh${TPUT_RESET}${TPUT_DIM} can work from cron. It will trigger an email from cron"
+ echo >&2 "only if it fails (it does not print anything if it can update netdata).${TPUT_RESET}"
+ if [ "${UID}" -eq "0" ]
+ then
+ if [ -d "/etc/cron.daily" -a ! -f "/etc/cron.daily/netdata-updater.sh" ]
+ then
+ echo >&2 "${TPUT_DIM}Run this to automatically check and install netdata updates once per day:${TPUT_RESET}"
+ echo >&2
+ echo >&2 "${TPUT_YELLOW}${TPUT_BOLD}ln -s ${PWD}/netdata-updater.sh /etc/cron.daily/netdata-updater.sh${TPUT_RESET}"
+ elif [ -d "/etc/periodic/daily" -a ! -f "/etc/periodic/daily/netdata-updater" ]
+ then
+ echo >&2 "${TPUT_DIM}Run this to automatically check and install netdata updates once per day:${TPUT_RESET}"
+ echo >&2
+ echo >&2 "${TPUT_YELLOW}${TPUT_BOLD}ln -s ${PWD}/netdata-updater.sh /etc/periodic/daily/netdata-updater${TPUT_RESET}"
+ fi
+ fi
+elif [ -f "netdata-updater.sh" ]
+ then
+ rm "netdata-updater.sh"
+fi
+
+# -----------------------------------------------------------------------------
+echo >&2
+progress "We are done!"
+
+if [ ${started} -eq 1 ]
+ then
+ netdata_banner "is installed and running now!"
+else
+ netdata_banner "is installed now!"
+fi
+
+echo >&2 " enjoy real-time performance and health monitoring..."
+echo >&2
+exit 0