From 20715e4afaf2409403dd8bf793219d8329b7596e Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 18 Mar 2011 01:14:49 +0100 Subject: [PATCH] add template for cdist-remote-code-run Signed-off-by: Nico Schottelius --- bin/cdist-remote-code-run | 82 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100755 bin/cdist-remote-code-run diff --git a/bin/cdist-remote-code-run b/bin/cdist-remote-code-run new file mode 100755 index 00000000..0489760d --- /dev/null +++ b/bin/cdist-remote-code-run @@ -0,0 +1,82 @@ +#!/bin/sh +# +# 2011 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 . +# +# +# This binary is executed on the remote side to execute code +# + +. cdist-config +[ $# -eq 1 ] || __cdist_usage "" +set -ue + +# Warning: Variable is special, as interpreted by __cdist_object_dir() +__cdist_out_object_dir="$1"; shift + +__cdist_object_list "$__cdist_out_object_dir" > "$__cdist_tmp_file" + +# FIXME post 1.0: add dependencies +while read object; do + code="$(__cdist_object_code "$object")" + echo "Running code for $object ..." + if [ -e "$code" ]; then + if [ -f "$code" ]; then + if [ -x "$code" ]; then + "$code" + else + __cdist_exit_err "$code exists, but is not executable." + fi + else + __cdist_exit_err "$code exists, but is not a file." + fi + else + __cdist_exit_err "Missing code for ${object}." + fi +done < "$__cdist_tmp_file" + +__cdist_all_code_done=n + +while [ "$__cdist_all_code_done" = n ]; do + while read object; do + code="$(__cdist_object_code "$object")" + require="$(__cdist_object_require "$object")" + + # Object depends on others, execute them before us + if [ -f "$require" ]; then + while read requirement; do + cdist-remote-code-run "$code" + done < "$require" + fi + + + echo "Running code for $object ..." + if [ -e "$code" ]; then + if [ -f "$code" ]; then + if [ -x "$code" ]; then + "$code" + else + __cdist_exit_err "$code exists, but is not executable." + fi + else + __cdist_exit_err "$code exists, but is not a file." + fi + else + __cdist_exit_err "Missing code for ${object}." + fi + done < "$__cdist_tmp_file" +done