]> arthur.barton.de Git - netdata.git/blobdiff - plugins.d/charts.d.dryrun-helper.sh
Now there are 2 kinds of plugins:
[netdata.git] / plugins.d / charts.d.dryrun-helper.sh
diff --git a/plugins.d/charts.d.dryrun-helper.sh b/plugins.d/charts.d.dryrun-helper.sh
new file mode 100755 (executable)
index 0000000..3d0bcb3
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+# will stop the script for any error
+set -e
+
+me="$0"
+name="$1"
+chart="$2"
+conf="$3"
+
+can_diff=1
+
+tmp1=`mktemp`
+tmp2=`mktemp`
+
+myset() {
+       set | grep -v "^_="     | grep -v "^PIPESTATUS=" | grep -v "^BASH_LINENO="
+}
+
+# save 2 'set'
+myset >"$tmp1"
+myset >"$tmp2"
+
+# make sure they don't differ
+diff "$tmp1" "$tmp2" >/dev/null 2>&1
+if [ $? -ne 0 ]
+then
+       # they differ, we cannot do the check
+       echo >&2 "$me: cannot check with diff."
+       can_diff=0
+fi
+
+# do it again, now including the script
+myset >"$tmp1"
+
+# include the plugin and its config
+if [ -f "$conf" ]
+then
+       . "$conf"
+       if [ $? -ne 0 ]
+       then
+               echo >&2 "$me: cannot load config file $conf"
+               rm "$tmp1" "$tmp2"
+               exit 1
+       fi
+fi
+
+. "$chart"
+if [ $? -ne 0 ]
+then
+       echo >&2 "$me: cannot load chart file $chart"
+       rm "$tmp1" "$tmp2"
+       exit 1
+fi
+
+# remove all variables starting with the plugin name
+myset | grep -v "^$name" >"$tmp2"
+
+if [ $can_diff -eq 1 ]
+then
+       # check if they are different
+       # make sure they don't differ
+       diff "$tmp1" "$tmp2" >&2
+       if [ $? -ne 0 ]
+       then
+               # they differ
+               rm "$tmp1" "$tmp2"
+               exit 1
+       fi
+fi
+
+rm "$tmp1" "$tmp2"
+exit 0