#!/bin/sh # # 2010 Nico Schottelius (nico-cdist at schottelius.org) # # 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 . # # # For each created object # run the manifest of the type (with object id), # try to merge back newly created objects (otherwise fail), # mark the object as being run # and iterate until all objects are marked being run. # # # . cdist-config if [ $# -ne 2 ]; then __cdist_usage " " fi set -eu __cdist_output_dir="$1"; shift __cdist_object_dir="$1"; shift __cdist_object_ran_all=0 while [ "$__cdist_object_ran_all" = 0 ]; do cd "$__cdist_object_dir" # FIXME past 1.0: allow multi level ids (/example/id instead of example_id only) # OUTER LOOP NEEDED IF GOING OVER ALL OBJECTS WITH FIND? for type in *; do cd "$__cdist_object_dir/$type" # find all objects (every object has the source recorded) find . -name "$__cdist_object_source" > "$__cdist_tmp_file" while read object; do echo "Running object ${type}/${object} ..." done < "$__cdist_tmp_file" done # FIXME: abort on real case only :-) __cdist_object_ran_all=1 done exit 0 # Ensure binaries exist and are up-to-date cdist-build-bin # prepend our path, so all cdist tools come before other tools PATH="${__cdist_cache_bin}:$PATH" # Force -x, so the user is aware the file is executed if [ ! -x "${__cdist_manifest_init}" ]; then __cdist_exit_err "${__cdist_manifest_init} needs to be executable." fi mkdir -p "${__cdist_output_dir}" "${__cdist_manifest}"