123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/usr/bin/env bash
- # SPDX-License-Identifier: GPL-3.0-or-later
- # shellcheck disable=SC2181
- # 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
- # shellcheck source=/dev/null
- . "$conf"
- if [ $? -ne 0 ]; then
- echo >&2 "$me: cannot load config file $conf"
- rm "$tmp1" "$tmp2"
- exit 1
- fi
- fi
- # shellcheck source=/dev/null
- . "$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
|