Merge branch 'file/better-errors' into 'master'

[__file] Better errors analogous to __directory

See merge request ungleich-public/cdist!854
This commit is contained in:
poljakowski 2020-02-26 21:50:01 +01:00
commit 4b24d886eb
2 changed files with 48 additions and 32 deletions

View file

@ -31,12 +31,24 @@ if [ "$state_should" = "pre-exists" ]; then
exit 1 exit 1
fi fi
if [ "$type" = "file" ]; then case $type in
exit 0 # nothing to do file)
else # nothing to do
echo "File \"$destination\" does not exist" exit 0
exit 1 ;;
fi none)
printf 'File "%s" does not exist\n' "$destination" >&2
exit 1
;;
directory|symlink)
printf 'File "%s" exists and is a %s, but should be a regular file\n' "$destination" "$type" >&2
exit 1
;;
*)
printf 'File or directory "%s" is in an unknown state\n' "$destination" >&2
exit 1
;;
esac
fi fi
upload_file= upload_file=

View file

@ -55,37 +55,41 @@ set_owner() {
} }
set_mode() { set_mode() {
echo "chmod '$1' '$destination'" echo "chmod '$1' '$destination'"
echo "chmod '$1'" >> "$__messages_out" echo "chmod '$1'" >> "$__messages_out"
fire_onchange=1 fire_onchange=1
} }
case "$state_should" in case "$state_should" in
present|exists|pre-exists) present|exists)
# Note: Mode - needs to happen last as a chown/chgrp can alter mode by # Note: Mode - needs to happen last as a chown/chgrp can alter mode by
# clearing S_ISUID and S_ISGID bits (see chown(2)) # clearing S_ISUID and S_ISGID bits (see chown(2))
for attribute in group owner mode; do for attribute in group owner mode; do
if [ -f "$__object/parameter/$attribute" ]; then if [ -f "$__object/parameter/$attribute" ]; then
value_should="$(cat "$__object/parameter/$attribute")" value_should="$(cat "$__object/parameter/$attribute")"
# change 0xxx format to xxx format => same as stat returns # change 0xxx format to xxx format => same as stat returns
if [ "$attribute" = mode ]; then if [ "$attribute" = mode ]; then
value_should="$(echo "$value_should" | sed 's/^0\(...\)/\1/')" value_should="$(echo "$value_should" | sed 's/^0\(...\)/\1/')"
fi fi
value_is="$(get_current_value "$attribute" "$value_should")" value_is="$(get_current_value "$attribute" "$value_should")"
if [ -f "$__object/files/set-attributes" ] || [ "$value_should" != "$value_is" ]; then if [ -f "$__object/files/set-attributes" ] || [ "$value_should" != "$value_is" ]; then
"set_$attribute" "$value_should" "set_$attribute" "$value_should"
fi
fi fi
done
if [ -f "$__object/files/set-attributes" ]; then
# set-attributes is created if file is created or uploaded in gencode-local
fire_onchange=1
fi fi
done
if [ -f "$__object/files/set-attributes" ]; then
# set-attributes is created if file is created or uploaded in gencode-local
fire_onchange=1
fi
;; ;;
pre-exists)
# pre-exists should never reach gencode-remote…
exit 1
;;
absent) absent)
if [ "$type" = "file" ]; then if [ "$type" = "file" ]; then
echo "rm -f '$destination'" echo "rm -f '$destination'"
@ -101,7 +105,7 @@ case "$state_should" in
esac esac
if [ -f "$__object/parameter/onchange" ]; then if [ -f "$__object/parameter/onchange" ]; then
if [ -n "$fire_onchange" ]; then if [ -n "$fire_onchange" ]; then
cat "$__object/parameter/onchange" cat "$__object/parameter/onchange"
fi fi
fi fi