forked from ungleich-public/cdist
		
	Merge pull request #219 from asteven/issue/219
__key_value removes quotes from values
This commit is contained in:
		
				commit
				
					
						6f4881a9a9
					
				
			
		
					 1 changed files with 18 additions and 9 deletions
				
			
		|  | @ -26,8 +26,8 @@ state_should=present | ||||||
| 
 | 
 | ||||||
| file="$(cat "$__object/parameter/file")" | file="$(cat "$__object/parameter/file")" | ||||||
| delimiter="$(cat "$__object/parameter/delimiter")" | delimiter="$(cat "$__object/parameter/delimiter")" | ||||||
| value="$(cat "$__object/parameter/value")" | # escape double quotes, as that is what we use ourself below | ||||||
| 
 | value_escaped="$(cat "$__object/parameter/value" | sed -e "s/\([\"]\)/\\\\\1/g")" | ||||||
| state_is="$(cat "$__object/explorer/state")" | state_is="$(cat "$__object/explorer/state")" | ||||||
| 
 | 
 | ||||||
| [ "$state_is" = "$state_should" ] && exit 0 | [ "$state_is" = "$state_should" ] && exit 0 | ||||||
|  | @ -35,20 +35,29 @@ state_is="$(cat "$__object/explorer/state")" | ||||||
| case "$state_should" in | case "$state_should" in | ||||||
|     absent) |     absent) | ||||||
|         # remove lines starting with key |         # remove lines starting with key | ||||||
|         echo "sed '/^$key\($delimiter\+\)/d' \"$file\" > \"$file.cdist-tmp\"" |         cat << DONE | ||||||
|         echo "mv \"$file.cdist-tmp\" \"$file\"" | tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX) | ||||||
|  | # preserve ownership and permissions by copying existing file over tmpfile | ||||||
|  | cp -p "$file" "\$tmpfile" | ||||||
|  | sed '/^$key\($delimiter\+\)/d' "$file" > "\$tmpfile" | ||||||
|  | mv -f "\$tmpfile" "$file" | ||||||
|  | DONE | ||||||
|     ;; |     ;; | ||||||
|     present) |     present) | ||||||
|         case "$state_is" in |         case "$state_is" in | ||||||
|             absent) |             absent) | ||||||
|                 # add new key and value |                 # add new key and value | ||||||
|                 echo "echo \"${key}${delimiter}${value}\" >> \"$file\"" |                 printf 'echo "%s%s%s" >> "%s"' "$key" "$delimiter" "$value_escaped" "$file" | ||||||
|             ;; |             ;; | ||||||
|             wrongvalue) |             wrongvalue) | ||||||
|                 # change exisiting value |                 # change exisiting value | ||||||
|                 printf 'sed "s|^%s\(%s\+\).*|%s\\1%s|" "%s" > "%s.cdist-tmp"\n' \ |                 cat << DONE | ||||||
|                     "$key" "$delimiter" "$key" "$value" "$file" "$file" | tmpfile=\$(mktemp ${file}.cdist.XXXXXXXXXX) | ||||||
|                 echo "mv \"$file.cdist-tmp\" \"$file\"" | # preserve ownership and permissions by copying existing file over tmpfile | ||||||
|  | cp -p "$file" "\$tmpfile" | ||||||
|  | sed "s|^$key\($delimiter\+\).*|$key\\1$value_escaped|" "$file" > "\$tmpfile" | ||||||
|  | mv -f "\$tmpfile" "$file" | ||||||
|  | DONE | ||||||
|             ;; |             ;; | ||||||
|             *) |             *) | ||||||
|                 echo "Unknown explorer state: $state_is" >&2 |                 echo "Unknown explorer state: $state_is" >&2 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue