diff --git a/cdist/conf/type/__key_value/gencode-remote b/cdist/conf/type/__key_value/gencode-remote
index b3ffeb46..5fa24d5b 100755
--- a/cdist/conf/type/__key_value/gencode-remote
+++ b/cdist/conf/type/__key_value/gencode-remote
@@ -1,6 +1,7 @@
#!/bin/sh
#
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
+# 2012 Nico Schottelius (nico-cdist at schottelius.org)
#
# This file is part of cdist.
#
@@ -18,42 +19,42 @@
# along with cdist. If not, see .
#
-key="$(cat "$__object/parameter/key")"
+key="$__object_id"
+[ -f "$__object/parameter/key" ] && key="$(cat "$__object/parameter/key")"
+state_should=present
+[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")"
+
file="$(cat "$__object/parameter/file")"
delimiter="$(cat "$__object/parameter/delimiter")"
value="$(cat "$__object/parameter/value")"
state_is="$(cat "$__object/explorer/state")"
-state_should="$(cat "$__object/parameter/state")"
-if [ "$state_is" = "$state_should" ]; then
- # nothing to do
- exit 0
-fi
+[ "$state_is" = "$state_should" ] && exit 0
case "$state_should" in
- absent)
- # remove lines starting with key
- echo "sed '/^$key\($delimiter\+\)/d' \"$file\" > \"$file.cdist-tmp\""
- echo "mv \"$file.cdist-tmp\" \"$file\""
- ;;
- present)
- case "$state_is" in
- absent)
- # add new key and value
- echo "echo \"${key}${delimiter}${value}\" >> \"$file\""
- ;;
- wrongvalue)
- # change exisiting value
- echo "sed \"s|^$key\($delimiter\+\).*|$key\1$value|\" \"$file\" > \"$file.cdist-tmp\""
- echo "mv \"$file.cdist-tmp\" \"$file\""
- ;;
- *)
- echo "Unknown explorer state: $state_is" >&2
- exit 1
- esac
- ;;
- *)
- echo "Unknown state: $state_should" >&2
- exit 1
+ absent)
+ # remove lines starting with key
+ echo "sed '/^$key\($delimiter\+\)/d' \"$file\" > \"$file.cdist-tmp\""
+ echo "mv \"$file.cdist-tmp\" \"$file\""
+ ;;
+ present)
+ case "$state_is" in
+ absent)
+ # add new key and value
+ echo "echo \"${key}${delimiter}${value}\" >> \"$file\""
+ ;;
+ wrongvalue)
+ # change exisiting value
+ echo "sed \"s|^$key\($delimiter\+\).*|$key\1$value|\" \"$file\" > \"$file.cdist-tmp\""
+ echo "mv \"$file.cdist-tmp\" \"$file\""
+ ;;
+ *)
+ echo "Unknown explorer state: $state_is" >&2
+ exit 1
+ esac
+ ;;
+ *)
+ echo "Unknown state: $state_should" >&2
+ exit 1
esac
diff --git a/cdist/conf/type/__key_value/manifest b/cdist/conf/type/__key_value/manifest
index 2e75e175..8ed9cc9c 100755
--- a/cdist/conf/type/__key_value/manifest
+++ b/cdist/conf/type/__key_value/manifest
@@ -1,6 +1,7 @@
#!/bin/sh
#
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
+# 2012 Nico Schottelius (nico-cdist at schottelius.org)
#
# This file is part of cdist.
#
@@ -18,13 +19,10 @@
# along with cdist. If not, see .
#
-# set defaults
-key="$(cat "$__object/parameter/key" 2>/dev/null \
- || echo "$__object_id" | tee "$__object/parameter/key")"
-state="$(cat "$__object/parameter/state" 2>/dev/null \
- || echo "present" | tee "$__object/parameter/state")"
+state_should=present
+[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")"
-if [ "$state" = "present" -a ! -f "$__object/parameter/value" ]; then
+if [ "$state_should" = "present" -a ! -f "$__object/parameter/value" ]; then
echo "Missing required parameter 'value'" >&2
exit 1
fi