#!/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 . # # # Run explorers # __cdist_explorer_run() { # [ $# -eq 3 ] || __cdist_usage " " [ $# -eq 5 ] || __cdist_usage " " set -x # Only do something, if there's at least one entry [ "$(__cdist_dir_listing "$2")" ] || return # Transfer explorers __cdist_dir push "$2" "$3" # Create output directory __cdist_run_remote mkdir -p "$4" # Execute all explorers cd "$2"; for __cdist_explorer_run_explorer in *; do #BUG: need to export __explorer to remote side! #exit 23 __cdist_run_remote \ "export $__cdist_name_var_explorer=\"$__cdist_remote_explorer_dir\";" \ "export $__cdist_name_var_global=\"$__cdist_remote_out_dir\";" \ "$3/$__cdist_explorer_run_explorer" > \ "$4/$__cdist_explorer_run_explorer" done # Transfer results back __cdist_dir pull "$4" "$5" return # case "$1" in # global) # type) # "$__cdist_name_var_object=\"$(__cdist_remote_object_dir "$__cdist_object_self")\"" # *) # ;; # esac # 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 remote environment export $__cdist_variable_name="$__cdist_explorer_dir" export __global="$__cdist_remote_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 }