12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/usr/bin/env bash
- # 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
|