diff --git a/cdist/conf/type/__clean_path/explorer/list b/cdist/conf/type/__clean_path/explorer/list
index 07d38127..58d0b411 100755
--- a/cdist/conf/type/__clean_path/explorer/list
+++ b/cdist/conf/type/__clean_path/explorer/list
@@ -29,7 +29,9 @@ then
exclude="$( cat "$__object/parameter/exclude" )"
find "$path" -mindepth 1 -maxdepth 1 -regex "$pattern" \
- -and -not -regex "$exclude"
+ -and -not -regex "$exclude" \
+ \( -type d -printf '%p/\n' , -type f -print \)
else
- find "$path" -mindepth 1 -maxdepth 1 -regex "$pattern"
+ find "$path" -mindepth 1 -maxdepth 1 -regex "$pattern" \
+ \( -type d -printf '%p/\n' , -type f -print \)
fi
diff --git a/cdist/conf/type/__clean_path/gencode-remote b/cdist/conf/type/__clean_path/gencode-remote
index 998a70d8..0157733f 100755
--- a/cdist/conf/type/__clean_path/gencode-remote
+++ b/cdist/conf/type/__clean_path/gencode-remote
@@ -18,31 +18,7 @@
# along with cdist. If not, see .
#
-[ ! -s "$__object/explorer/list" ] && exit 0
-
-path="/$__object_id"
-
-pattern="$( cat "$__object/parameter/pattern" )"
-
-if [ -f "$__object/parameter/exclude" ]
-then
- exclude="$( cat "$__object/parameter/exclude" )"
-
- echo "find '$path' -mindepth 1 -maxdepth 1 -regex '$pattern'" \
- "-and -not -regex '$exclude'" \
- '-exec rm -rf {} \;'
-else
- echo "find '$path' -mindepth 1 -maxdepth 1 -regex '$pattern'" \
- '-exec rm -rf {} \;'
-fi
-
-while read -r f
-do
- echo "removed '$f'" >> "$__messages_out"
-done \
-< "$__object/explorer/list"
-
-if [ -f "$__object/parameter/onchange" ]
+if [ -f "$__object/explorer/list" ] && [ -f "$__object/parameter/onchange" ]
then
cat "$__object/parameter/onchange"
fi
diff --git a/cdist/conf/type/__clean_path/manifest b/cdist/conf/type/__clean_path/manifest
new file mode 100755
index 00000000..065ecb36
--- /dev/null
+++ b/cdist/conf/type/__clean_path/manifest
@@ -0,0 +1,33 @@
+#!/bin/sh -e
+#
+# 2019 Ander Punnar (ander-at-kvlt-dot-ee)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+
+[ ! -f "$__object/explorer/list" ] && exit 0
+
+for l in $( cat "$__object/explorer/list" )
+do
+ if echo "$l" | grep -Eq '/$'
+ then
+ __directory "$l" --state absent
+ echo "removed directory '$l'" >> "$__messages_out"
+ else
+ __file "$l" --state absent
+ echo "removed file '$l'" >> "$__messages_out"
+ fi
+done