forked from ungleich-public/cdist
		
	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:
		
				commit
				
					
						4b24d886eb
					
				
			
		
					 2 changed files with 48 additions and 32 deletions
				
			
		| 
						 | 
				
			
			@ -31,12 +31,24 @@ if [ "$state_should" = "pre-exists" ]; then
 | 
			
		|||
      exit 1
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
   if [ "$type" = "file" ]; then
 | 
			
		||||
      exit 0 # nothing to do
 | 
			
		||||
   else
 | 
			
		||||
      echo "File \"$destination\" does not exist"
 | 
			
		||||
      exit 1
 | 
			
		||||
   fi
 | 
			
		||||
   case $type in
 | 
			
		||||
      file)
 | 
			
		||||
         # nothing to do
 | 
			
		||||
         exit 0
 | 
			
		||||
      ;;
 | 
			
		||||
      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
 | 
			
		||||
 | 
			
		||||
upload_file=
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,37 +55,41 @@ set_owner() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
set_mode() {
 | 
			
		||||
   echo "chmod '$1' '$destination'"
 | 
			
		||||
   echo "chmod '$1'" >> "$__messages_out"
 | 
			
		||||
   fire_onchange=1
 | 
			
		||||
    echo "chmod '$1' '$destination'"
 | 
			
		||||
    echo "chmod '$1'" >> "$__messages_out"
 | 
			
		||||
    fire_onchange=1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
case "$state_should" in
 | 
			
		||||
    present|exists|pre-exists)
 | 
			
		||||
    # Note: Mode - needs to happen last as a chown/chgrp can alter mode by
 | 
			
		||||
    #  clearing S_ISUID and S_ISGID bits (see chown(2))
 | 
			
		||||
    for attribute in group owner mode; do
 | 
			
		||||
        if [ -f "$__object/parameter/$attribute" ]; then
 | 
			
		||||
            value_should="$(cat "$__object/parameter/$attribute")"
 | 
			
		||||
    present|exists)
 | 
			
		||||
        # Note: Mode - needs to happen last as a chown/chgrp can alter mode by
 | 
			
		||||
        #  clearing S_ISUID and S_ISGID bits (see chown(2))
 | 
			
		||||
        for attribute in group owner mode; do
 | 
			
		||||
            if [ -f "$__object/parameter/$attribute" ]; then
 | 
			
		||||
                value_should="$(cat "$__object/parameter/$attribute")"
 | 
			
		||||
 | 
			
		||||
            # change 0xxx format to xxx format => same as stat returns
 | 
			
		||||
            if [ "$attribute" = mode ]; then
 | 
			
		||||
                value_should="$(echo "$value_should" | sed 's/^0\(...\)/\1/')"
 | 
			
		||||
            fi
 | 
			
		||||
                # change 0xxx format to xxx format => same as stat returns
 | 
			
		||||
                if [ "$attribute" = mode ]; then
 | 
			
		||||
                    value_should="$(echo "$value_should" | sed 's/^0\(...\)/\1/')"
 | 
			
		||||
                fi
 | 
			
		||||
 | 
			
		||||
            value_is="$(get_current_value "$attribute" "$value_should")"
 | 
			
		||||
            if [ -f "$__object/files/set-attributes" ] || [ "$value_should" != "$value_is" ]; then
 | 
			
		||||
                "set_$attribute" "$value_should"
 | 
			
		||||
                value_is="$(get_current_value "$attribute" "$value_should")"
 | 
			
		||||
                if [ -f "$__object/files/set-attributes" ] || [ "$value_should" != "$value_is" ]; then
 | 
			
		||||
                    "set_$attribute" "$value_should"
 | 
			
		||||
                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
 | 
			
		||||
    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)
 | 
			
		||||
        if [ "$type" = "file" ]; then
 | 
			
		||||
            echo "rm -f '$destination'"
 | 
			
		||||
| 
						 | 
				
			
			@ -101,7 +105,7 @@ case "$state_should" in
 | 
			
		|||
esac
 | 
			
		||||
 | 
			
		||||
if [ -f "$__object/parameter/onchange" ]; then
 | 
			
		||||
   if [ -n "$fire_onchange" ]; then
 | 
			
		||||
      cat "$__object/parameter/onchange"
 | 
			
		||||
   fi
 | 
			
		||||
    if [ -n "$fire_onchange" ]; then
 | 
			
		||||
        cat "$__object/parameter/onchange"
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue