diff --git a/conf/type/__directory/explorer/exists b/conf/type/__directory/explorer/state similarity index 96% rename from conf/type/__directory/explorer/exists rename to conf/type/__directory/explorer/state index f8b85671..9bdd9024 100755 --- a/conf/type/__directory/explorer/exists +++ b/conf/type/__directory/explorer/state @@ -24,7 +24,7 @@ destination="/$__object_id" if [ -e "$destination" ]; then - echo yes + echo present else - echo no + echo absent fi diff --git a/conf/type/__directory/gencode-remote b/conf/type/__directory/gencode-remote index e871547a..56bd73a1 100755 --- a/conf/type/__directory/gencode-remote +++ b/conf/type/__directory/gencode-remote @@ -1,6 +1,6 @@ #!/bin/sh # -# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# 2011-2012 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -18,56 +18,43 @@ # along with cdist. If not, see . # +# Check state and exit if nothing needs to be done +state_should="present" +[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")" +state_is="$(cat "$__object/explorer/state")" +[ "$state_should" = "$state_is" ] && exit 0 + destination="/$__object_id" -state_should="$(cat "$__object/parameter/state")" + +mkdiropt="" +grep yes "$__object/parameter/parents" >/dev/null 2>&1 && mkdiropt="-p" +recursive="" +grep yes "$__object/parameter/recursive" >/dev/null 2>&1 && recursive="-R" case "$state_should" in - present) - # Include parent directories? - if [ -f "$__object/parameter/parents" ]; then - parents="$(cat "$__object/parameter/parents")" - if [ yes = "$parents" ]; then - mkdiropt="-p" - else - mkdiropt="" - fi - fi + present) + echo mkdir $mkdiropt \"$destination\" - if [ -f "$__object/parameter/recursive" ]; then - if [ yes = "$(cat "$__object/parameter/recursive")" ]; then - recursive="-R" - fi - fi + # Mode settings + if [ -f "$__object/parameter/mode" ]; then + echo chmod \"$(cat "$__object/parameter/mode")\" \"$destination\" + fi - # Only create if not already existent - if [ no = "$(cat "$__object/explorer/exists")" ]; then - echo mkdir $mkdiropt \"$destination\" - fi + # Group + if [ -f "$__object/parameter/group" ]; then + echo chgrp $recursive \"$(cat "$__object/parameter/group")\" \"$destination\" + fi - # Mode settings - if [ -f "$__object/parameter/mode" ]; then - echo chmod \"$(cat "$__object/parameter/mode")\" \"$destination\" - fi - - # Group - if [ -f "$__object/parameter/group" ]; then - echo chgrp $recursive \"$(cat "$__object/parameter/group")\" \"$destination\" - fi - - # Owner - if [ -f "$__object/parameter/owner" ]; then - echo chown $recursive \"$(cat "$__object/parameter/owner")\" \"$destination\" - fi - ;; - absent) - # Only delete if it exists - if [ yes = "$(cat "$__object/explorer/exists")" ]; then - echo rm -rf \"$destination\" - fi - - ;; - *) - echo "Unknown state: $state_should" >&2 - exit 1 - ;; + # Owner + if [ -f "$__object/parameter/owner" ]; then + echo chown $recursive \"$(cat "$__object/parameter/owner")\" \"$destination\" + fi + ;; + absent) + echo rm -rf \"$destination\" + ;; + *) + echo "Unknown state: $state_should" >&2 + exit 1 + ;; esac diff --git a/conf/type/__directory/manifest b/conf/type/__directory/manifest deleted file mode 100755 index a8ee5a6f..00000000 --- a/conf/type/__directory/manifest +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# -# 2011 Steven Armstrong (steven-cdist at armstrong.cc) -# -# 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 . -# - -# set defaults -state="$(cat "$__object/parameter/state" 2>/dev/null \ - || echo "present" | tee "$__object/parameter/state")" diff --git a/doc/dev/logs/2012-06-15.explorer-dep-problem b/doc/dev/logs/2012-06-15.explorer-dep-problem new file mode 100644 index 00000000..30803032 --- /dev/null +++ b/doc/dev/logs/2012-06-15.explorer-dep-problem @@ -0,0 +1,4 @@ +Known bug rediscovered: + Explorer for __start_on_boot mysql runs before __package mysql was finished. + +Requires two runs to actually finish the task.