From 29450e5e99ca4d7ece84d93aa863b52dfd0376cf Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 17 Jun 2011 12:49:02 +0200 Subject: [PATCH] add __cdist_explorer_run, which should replace __cdist_remote_explorer_run Signed-off-by: Nico Schottelius --- core/__cdist_explorer_run | 71 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 core/__cdist_explorer_run diff --git a/core/__cdist_explorer_run b/core/__cdist_explorer_run new file mode 100755 index 00000000..a7958a41 --- /dev/null +++ b/core/__cdist_explorer_run @@ -0,0 +1,71 @@ +#!/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 explorers +# +# It supports different variables names to be used, so __explorers +# and __type_explorers can be submitted :-) +# + +__cdist_remote_explorer_run() +{ + [ $# -eq 3 ] || __cdist_usage " " + + "$__cdist_name_var_object=\"$(__cdist_remote_object_dir "$__cdist_object_self")\"" + + # Variable that defines the home of the explorers + __cdist_variable_name="$1"; shift + + # Find explorers here + __cdist_explorer_dir="$1"; shift + + # Write output here + __cdist_my_out_dir="$1"; shift + + # Setup environment + export $__cdist_variable_name="$__cdist_explorer_dir" + export __global="$__cdist_remote_out_dir" + + mkdir -p "$__cdist_my_out_dir" + + # Ensure there is at least one explorer + num="$(ls -1 "$__cdist_explorer_dir" | wc -l)" + if [ "$num" -lt 1 ]; then + __cdist_exit_err "${__cdist_explorer_dir}: Contains no explorers" + fi + + # Execute all explorers + for explorer in "$__cdist_explorer_dir/"*; do + explorer_name="${explorer##*/}" + + if [ -f "$explorer" ]; then + if [ ! -x "$explorer" ]; then + __cdist_exit_err "Explorer \"$explorer\" exists, but is not executable." + fi + + # Execute explorers and save results in remote destination directory + "$explorer" > "${__cdist_my_out_dir}/$explorer_name" + else + if [ -e "$explorer" ]; then + __cdist_exit_err "Explorer \"$explorer\" exists, but is not a file." + fi + fi + done +}