forked from ungleich-public/cdist
		
	+minimal __cdist_echo
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								1b84a28511
							
						
					
				
			
			
				commit
				
					
						d359f69f4b
					
				
			
		
					 27 changed files with 1222 additions and 0 deletions
				
			
		
							
								
								
									
										34
									
								
								core/__cdist_cache
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								core/__cdist_cache
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,34 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# Save the configuration tree into the local cache
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_cache()
 | 
			
		||||
{
 | 
			
		||||
   # Create base to move into
 | 
			
		||||
   mkdir -p "${__cdist_local_base_cache_dir}"
 | 
			
		||||
 | 
			
		||||
   __cdist_echo info \
 | 
			
		||||
      "Caching to $(__cdist_host_cache_dir "$__cdist_target_host")"
 | 
			
		||||
   rm -rf "$(__cdist_host_cache_dir "$__cdist_target_host")"
 | 
			
		||||
   mv "$__cdist_local_base_dir" \
 | 
			
		||||
      "$(__cdist_host_cache_dir "$__cdist_target_host")"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										46
									
								
								core/__cdist_dir
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										46
									
								
								core/__cdist_dir
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Push a directory to a target, both sides have the same name (i.e. explorers)
 | 
			
		||||
# or
 | 
			
		||||
# Pull a directory from a target, both sides have the same name (i.e. explorers)
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_dir()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -eq 3 ] || __cdist_usage "<push|pull> <src dir> <dst dir>"
 | 
			
		||||
 | 
			
		||||
   # ${3%/*} will be the destination directory, so no subdirectories
 | 
			
		||||
   # of the same name are created, if the directory is already existing
 | 
			
		||||
 | 
			
		||||
   if [ "$1" = "push" ]; then
 | 
			
		||||
      # FIXME: add error handling with __cdist_run_remote_... or so
 | 
			
		||||
      ssh "${__cdist_remote_user}@${__cdist_target_host}" \
 | 
			
		||||
         "mkdir -p \"$3\""
 | 
			
		||||
      scp -qr "$2" \
 | 
			
		||||
         "${__cdist_remote_user}@${__cdist_target_host}:${3%/*}"
 | 
			
		||||
   elif [ "$1" = "pull" ]; then
 | 
			
		||||
      mkdir -p "$3"
 | 
			
		||||
      scp -qr "${__cdist_remote_user}@${__cdist_target_host}:$2" \
 | 
			
		||||
         "${3%/*}"
 | 
			
		||||
   else
 | 
			
		||||
      __cdist_exit_err "Unknown action $1"
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										30
									
								
								core/__cdist_dir_listing
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								core/__cdist_dir_listing
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# List files in a directory, if it exists
 | 
			
		||||
#
 | 
			
		||||
# We only create output, if there's at least one entry
 | 
			
		||||
# and can thus be used as a boolean ;-)
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_dir_listing()
 | 
			
		||||
{
 | 
			
		||||
   [ -d "$1" ] && ls -1 "$1"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										56
									
								
								core/__cdist_echo
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										56
									
								
								core/__cdist_echo
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# echo / syslog alike function
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_echo()
 | 
			
		||||
{
 | 
			
		||||
   __cdist_echo_type="$1"; shift
 | 
			
		||||
 | 
			
		||||
   set +u
 | 
			
		||||
   if [ "$__cdist_object_self" ]; then
 | 
			
		||||
      __cdist_echo_prefix="${__cdist_object_self}:"
 | 
			
		||||
   else
 | 
			
		||||
      __cdist_echo_prefix="core: "
 | 
			
		||||
   fi
 | 
			
		||||
   set -u
 | 
			
		||||
 | 
			
		||||
   case "$__cdist_echo_type" in
 | 
			
		||||
      debug)
 | 
			
		||||
         if [ "$__cdist_debug" = 1 ]; then
 | 
			
		||||
            echo $__cdist_echo_prefix "DEBUG: $@"
 | 
			
		||||
         fi
 | 
			
		||||
      ;;
 | 
			
		||||
      info)
 | 
			
		||||
         echo $__cdist_echo_prefix "$@"
 | 
			
		||||
      ;;
 | 
			
		||||
      warn)
 | 
			
		||||
         echo $__cdist_echo_prefix "Warning: $@"
 | 
			
		||||
      ;;
 | 
			
		||||
      error)
 | 
			
		||||
         echo $__cdist_echo_prefix "Error: $@" >&2
 | 
			
		||||
      ;;
 | 
			
		||||
      *)
 | 
			
		||||
         echo "CORE BUG, who created the broken commit in $0?" >&2
 | 
			
		||||
         exit 23
 | 
			
		||||
      ;;
 | 
			
		||||
   esac
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								core/__cdist_exit_err
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										28
									
								
								core/__cdist_exit_err
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Print error and exit (perror() alike)
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_exit_err()
 | 
			
		||||
{
 | 
			
		||||
   __cdist_echo error "$@"
 | 
			
		||||
   exit 1
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										79
									
								
								core/__cdist_explorer_run
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										79
									
								
								core/__cdist_explorer_run
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,79 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Run explorers - FIXME: this function is ugly
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_explorer_run()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -eq 5 ] || __cdist_usage "<global|type> <local explorer dir> <remote explorer dir> <remote out dir> <local 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
 | 
			
		||||
 | 
			
		||||
   # Check whether to setup variable for type explorer
 | 
			
		||||
   case "$1" in
 | 
			
		||||
      global)
 | 
			
		||||
      ;;
 | 
			
		||||
      type)
 | 
			
		||||
         # FIXME: think about how and where this gets setup!
 | 
			
		||||
         "$__cdist_name_var_object=\"$(__cdist_remote_object_dir "$__cdist_object_self")\""
 | 
			
		||||
      ;;
 | 
			
		||||
   esac
 | 
			
		||||
 | 
			
		||||
   # Transfer explorers
 | 
			
		||||
   __cdist_dir push "$2" "$3"
 | 
			
		||||
 | 
			
		||||
   # Create output directory
 | 
			
		||||
   __cdist_run_remote mkdir -p "$4"
 | 
			
		||||
 | 
			
		||||
   # Execute all explorers - FIXME: isolate cd call?
 | 
			
		||||
   cd "$2";
 | 
			
		||||
   # FIXME: cleanup double variable, no need when in directory
 | 
			
		||||
   for __cdist_explorer_run_explorer in *; do
 | 
			
		||||
      __cdist_explorer_explorer_name="${__cdist_explorer_run_explorer##*/}"
 | 
			
		||||
 | 
			
		||||
      if [ -f "$__cdist_explorer_run_explorer" ]; then
 | 
			
		||||
         if [ ! -x "$__cdist_explorer_run_explorer" ]; then
 | 
			
		||||
            __cdist_exit_err "Explorer \"$__cdist_explorer_run_explorer\" exists, but is not executable."
 | 
			
		||||
         fi
 | 
			
		||||
 | 
			
		||||
      else
 | 
			
		||||
         if [ -e "$__cdist_explorer_run_explorer" ]; then
 | 
			
		||||
            __cdist_exit_err "Explorer \"$__cdist_explorer_run_explorer\" exists, but is not a file."
 | 
			
		||||
         fi
 | 
			
		||||
      fi
 | 
			
		||||
 | 
			
		||||
      # FIXME: no need for remote out dir probably?
 | 
			
		||||
      # or should we leave it and continue using __cdist_dir pull?
 | 
			
		||||
      __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" || \
 | 
			
		||||
               __cdist_exit_err "Explorer $__cdist_explorer_run_explorer failed."
 | 
			
		||||
   done
 | 
			
		||||
 | 
			
		||||
   # Transfer results back
 | 
			
		||||
   __cdist_dir pull "$4" "$5"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										32
									
								
								core/__cdist_explorer_run_global
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										32
									
								
								core/__cdist_explorer_run_global
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,32 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010-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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Copy & run the global explorers, i.e. not bound to types
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_explorer_run_global()
 | 
			
		||||
{
 | 
			
		||||
   __cdist_echo info "Running global explorers "
 | 
			
		||||
 | 
			
		||||
   # run the global explorers remotely
 | 
			
		||||
   __cdist_explorer_run global \
 | 
			
		||||
      "$__cdist_explorer_dir" "$__cdist_remote_explorer_dir" \
 | 
			
		||||
      "$__cdist_remote_out_explorer_dir" "$__cdist_out_explorer_dir"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								core/__cdist_init_deploy
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										40
									
								
								core/__cdist_init_deploy
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Prepare deployment
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_init_deploy()
 | 
			
		||||
{
 | 
			
		||||
   __cdist_echo info "Creating clean directory structure "
 | 
			
		||||
 | 
			
		||||
   # Ensure there is no old stuff, neither local nor remote
 | 
			
		||||
   rm -rf "$__cdist_local_base_dir"
 | 
			
		||||
   ssh "${__cdist_remote_user}@${__cdist_target_host}" \
 | 
			
		||||
      "rm -rf ${__cdist_remote_base_dir}"
 | 
			
		||||
 | 
			
		||||
   # Init base
 | 
			
		||||
   mkdir -p "$__cdist_local_base_dir"
 | 
			
		||||
   ssh "${__cdist_remote_user}@${__cdist_target_host}" \
 | 
			
		||||
      "mkdir -p ${__cdist_remote_base_dir}"
 | 
			
		||||
 | 
			
		||||
   # Link configuration source directory - consistent with remote
 | 
			
		||||
   ln -sf "$__cdist_conf_dir" "$__cdist_local_base_dir/$__cdist_name_conf_dir"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										44
									
								
								core/__cdist_is_executable
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										44
									
								
								core/__cdist_is_executable
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,44 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Test whether something is executable (that should be executable) or
 | 
			
		||||
# is missing
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_is_executable()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -eq 1 ] || __cdist_exit_err "<executable>"
 | 
			
		||||
 | 
			
		||||
   if [ -e "$1" ]; then
 | 
			
		||||
      if [ -f "$1" ]; then
 | 
			
		||||
         if [ -x "$1" ]; then
 | 
			
		||||
            # Exists and is a correct executable
 | 
			
		||||
            true
 | 
			
		||||
         else
 | 
			
		||||
            __cdist_exit_err "$1 exists, but is not executable."
 | 
			
		||||
         fi
 | 
			
		||||
      else
 | 
			
		||||
         __cdist_exit_err "$1 exists, but is not a file."
 | 
			
		||||
      fi
 | 
			
		||||
   else
 | 
			
		||||
      # Does not exist
 | 
			
		||||
      false
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										31
									
								
								core/__cdist_kill_on_interrupt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								core/__cdist_kill_on_interrupt
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# Run the given command for each created object.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# Does not work in children, will be called again in every script!
 | 
			
		||||
# Use only in interactive "front end" scripts
 | 
			
		||||
__cdist_kill_on_interrupt()
 | 
			
		||||
{
 | 
			
		||||
   __cdist_tmp_removal
 | 
			
		||||
   kill 0
 | 
			
		||||
   exit 1
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										53
									
								
								core/__cdist_manifest_run
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										53
									
								
								core/__cdist_manifest_run
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,53 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010-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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# Let's build a cconfig tree from a configuration
 | 
			
		||||
# And save it into the cache tree
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_manifest_run()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -eq 1 ] || __cdist_usage "<manifest>"
 | 
			
		||||
 | 
			
		||||
   __cdist_manifest="$1"; shift
 | 
			
		||||
 | 
			
		||||
   ################################################################################
 | 
			
		||||
   # Export information for cdist-type-emulator or manifest
 | 
			
		||||
   #
 | 
			
		||||
 | 
			
		||||
   # Config dir should not get reset - FIXME: why did I do this?
 | 
			
		||||
   export __cdist_conf_dir
 | 
			
		||||
 | 
			
		||||
   # Used to record the source in the object
 | 
			
		||||
   export __cdist_manifest
 | 
			
		||||
 | 
			
		||||
   # Export information for manifests - __cdist_out_dir comes from cdist-config
 | 
			
		||||
   export $__cdist_name_var_global="$__cdist_out_dir"
 | 
			
		||||
 | 
			
		||||
   ################################################################################
 | 
			
		||||
   # The actual run
 | 
			
		||||
   #
 | 
			
		||||
 | 
			
		||||
   # Ensure binaries are existing - FIXME: move error handling into __cdist_type_build_emulation
 | 
			
		||||
   __cdist_type_build_emulation \
 | 
			
		||||
      || __cdist_exit_err "Failed to build type emulation binaries"
 | 
			
		||||
 | 
			
		||||
   __cdist_run_shell "${__cdist_manifest}"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										32
									
								
								core/__cdist_manifest_run_init
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										32
									
								
								core/__cdist_manifest_run_init
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,32 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010-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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# Let's build a cconfig tree from a configuration
 | 
			
		||||
# And save it into the cache tree
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_manifest_run_init()
 | 
			
		||||
{
 | 
			
		||||
   # FIXME: probably do not export but always set explicitly?
 | 
			
		||||
   export $__cdist_name_var_manifest="$__cdist_manifest_dir"
 | 
			
		||||
 | 
			
		||||
   __cdist_echo info "Running initial manifest for $__cdist_target_host "
 | 
			
		||||
   __cdist_manifest_run "$__cdist_manifest_init"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										60
									
								
								core/__cdist_object_all
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										60
									
								
								core/__cdist_object_all
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,60 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
# 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# Run the given command for each created object.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_object_all()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -eq 1 ] || __cdist_usage "<command>"
 | 
			
		||||
 | 
			
		||||
   __cdist_object_all_object_all_command="$1"; shift
 | 
			
		||||
 | 
			
		||||
   __cdist_object_all_object_all_objects="$__cdist_tmp_dir/objects"
 | 
			
		||||
 | 
			
		||||
   # Ensure object dir exists, so marker can be created
 | 
			
		||||
   mkdir -p "${__cdist_out_object_dir}"
 | 
			
		||||
 | 
			
		||||
   # FIXME: : - why do we use a file?
 | 
			
		||||
   #    core/__cdist_object_manifest_run:         touch "$__cdist_objects_created"
 | 
			
		||||
 | 
			
		||||
   # Loop until we do not create new objects anymore
 | 
			
		||||
   # which is equal to all objects have been run
 | 
			
		||||
   touch "$__cdist_objects_created"
 | 
			
		||||
   while [ -f "$__cdist_objects_created" ]; do
 | 
			
		||||
      # Assume we're done after this run
 | 
			
		||||
      rm "$__cdist_objects_created"
 | 
			
		||||
 | 
			
		||||
      # Get listing of objects
 | 
			
		||||
      __cdist_object_list "$__cdist_out_object_dir" > \
 | 
			
		||||
         "$__cdist_object_all_object_all_objects"
 | 
			
		||||
 | 
			
		||||
      # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP
 | 
			
		||||
      while read __cdist_object_all_object; do
 | 
			
		||||
         set -- "$@" "$__cdist_object_all_object"
 | 
			
		||||
      done < "$__cdist_object_all_object_all_objects"
 | 
			
		||||
 | 
			
		||||
      while [ $# -gt 0 ]; do
 | 
			
		||||
         __cdist_object_all_object="$1"; shift
 | 
			
		||||
         $__cdist_object_all_object_all_command "$__cdist_object_all_object"
 | 
			
		||||
      done
 | 
			
		||||
   done
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										54
									
								
								core/__cdist_object_code_run
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										54
									
								
								core/__cdist_object_code_run
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
# 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Exec the code for the given object locally and remote
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_object_code_run()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -eq 1 ] || __cdist_exit_err "<object>"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if [ ! -d "$(__cdist_object_dir "$1")" ]; then
 | 
			
		||||
      __cdist_exit_err "Object undefined"
 | 
			
		||||
   fi  
 | 
			
		||||
 | 
			
		||||
   # Code local
 | 
			
		||||
   export __cdist_out_object_dir="$__cdist_out_object_dir"
 | 
			
		||||
   __cdist_echo debug "Trying to run local code"
 | 
			
		||||
   if __cdist_is_executable \
 | 
			
		||||
      "$(__cdist_object_code "$1" "${__cdist_name_gencode_local}")"; then
 | 
			
		||||
      __cdist_run_shell \
 | 
			
		||||
         "$(__cdist_object_code "$1" "${__cdist_name_gencode_local}")"
 | 
			
		||||
   else
 | 
			
		||||
      __cdist_echo debug "Local code: none"
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
   # Code remote
 | 
			
		||||
   __cdist_echo debug "Trying to run remote code"
 | 
			
		||||
   if __cdist_is_executable \
 | 
			
		||||
      "$(__cdist_object_code "$1" "${__cdist_name_gencode_remote}")"; then
 | 
			
		||||
 | 
			
		||||
      __cdist_run_remote $(__cdist_remote_object_code "$1")
 | 
			
		||||
   else
 | 
			
		||||
      __cdist_echo debug "Remote code: none"
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										89
									
								
								core/__cdist_object_explorer_run
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										89
									
								
								core/__cdist_object_explorer_run
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,89 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
# 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# Run the explorers for the given object on the target host.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# FIXME: many cleanups needed before going production!
 | 
			
		||||
 | 
			
		||||
__cdist_object_explorer_run()
 | 
			
		||||
{
 | 
			
		||||
   __cdist_object_self="$1"; shift
 | 
			
		||||
 | 
			
		||||
   __cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object_self")"
 | 
			
		||||
   __cdist_type="$(__cdist_type_from_object "$__cdist_object_self")"
 | 
			
		||||
 | 
			
		||||
   # Check if type of object has >= 1 explorer
 | 
			
		||||
   __cdist_has_explorer="$(__cdist_dir_listing "$(__cdist_type_explorer_dir "$__cdist_type")" | wc -l)"
 | 
			
		||||
   # Run the type explorers for the current object if any
 | 
			
		||||
   if [ "$__cdist_has_explorer" -ge 1 ]; then
 | 
			
		||||
      if ! __cdist_type_explorer_pushed "$__cdist_type"; then
 | 
			
		||||
         # FIXME: variables!
 | 
			
		||||
         src_dir="$(__cdist_type_explorer_dir "$__cdist_type")"
 | 
			
		||||
         dst_dir="$(__cdist_remote_type_explorer_dir "$__cdist_type")"
 | 
			
		||||
         __cdist_echo info "Transfering explorers for $__cdist_type "
 | 
			
		||||
         __cdist_dir push "$src_dir" "$dst_dir"
 | 
			
		||||
         __cdist_type_explorer_pushed_add "$__cdist_type"
 | 
			
		||||
      fi
 | 
			
		||||
 | 
			
		||||
      __cdist_echo info "Running explorers"
 | 
			
		||||
      # Copy object parameters
 | 
			
		||||
      __cdist_dir push \
 | 
			
		||||
         "$(__cdist_object_parameter_dir "$__cdist_object_self")"         \
 | 
			
		||||
         "$(__cdist_remote_object_parameter_dir "$__cdist_object_self")"
 | 
			
		||||
 | 
			
		||||
      # Execute explorers
 | 
			
		||||
      # FIXME: STOPPED:
 | 
			
		||||
      #  - remove cdist-remote-explorer-run
 | 
			
		||||
      #  - problem: new variables / need to run explorer directly?
 | 
			
		||||
      #     -> or put logic into __cdist_explorer_run
 | 
			
		||||
      #        -> think about having _one_ wrapper script for remote to execute
 | 
			
		||||
      #           shell functions
 | 
			
		||||
 | 
			
		||||
      # Create remote output directory
 | 
			
		||||
      __cdist_run_remote mkdir -p "$(__cdist_remote_object_type_explorer_dir "$__cdist_object_self")"
 | 
			
		||||
 | 
			
		||||
      cd "$(__cdist_type_explorer_dir "$__cdist_type")"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      for __cdist_object_explorer_run_explorer in *; do
 | 
			
		||||
         __cdist_run_remote                                          \
 | 
			
		||||
            "$__cdist_name_var_object=\"$(__cdist_remote_object_dir "$__cdist_object_self")\"" \
 | 
			
		||||
            "$__cdist_name_var_object_id=\"$__cdist_object_id\""     \
 | 
			
		||||
            "$__cdist_name_var_self=\"$__cdist_object_self\""        \
 | 
			
		||||
            "$(__cdist_remote_type_explorer_dir "$__cdist_type")/$__cdist_object_explorer_run_explorer"    \
 | 
			
		||||
            ">" "$(__cdist_remote_object_type_explorer_dir "$__cdist_object_self")/$__cdist_object_explorer_run_explorer"
 | 
			
		||||
      done
 | 
			
		||||
 | 
			
		||||
#       __cdist_run_remote                                          \
 | 
			
		||||
#          "$__cdist_name_var_object=\"$(__cdist_remote_object_dir "$__cdist_object_self")\"" \
 | 
			
		||||
#          "$__cdist_name_var_object_id=\"$__cdist_object_id\""     \
 | 
			
		||||
#          "$__cdist_name_var_self=\"$__cdist_object_self\""        \
 | 
			
		||||
#          cdist-remote-explorer-run                                \
 | 
			
		||||
#          "$__cdist_name_var_type_explorer"                        \
 | 
			
		||||
#          "$(__cdist_remote_type_explorer_dir "$__cdist_type")"    \
 | 
			
		||||
#          "$(__cdist_remote_object_type_explorer_dir "$__cdist_object_self")"
 | 
			
		||||
 | 
			
		||||
      # Copy back results
 | 
			
		||||
      __cdist_dir pull "$(__cdist_remote_object_type_explorer_dir "$__cdist_object_self")" \
 | 
			
		||||
         "$(__cdist_object_type_explorer_dir "$__cdist_object_self")"
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										66
									
								
								core/__cdist_object_gencode
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										66
									
								
								core/__cdist_object_gencode
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,66 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Generate code from one object (object must be relative path!)
 | 
			
		||||
# WARNING: OUTPUT ON STDOUT, ERRORS NEED TO BE ON STDERR!
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# FIXME: check variable names:
 | 
			
		||||
# either prefix or use global or use functions directly
 | 
			
		||||
# functions looks good, they are cheap anyway!
 | 
			
		||||
 | 
			
		||||
__cdist_object_gencode()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -eq 2 ] || __cdist_usage "<object>" "<type>"
 | 
			
		||||
 | 
			
		||||
   __cdist_object_self="$1"; shift
 | 
			
		||||
   __cdist_gencode_type="$1"; shift
 | 
			
		||||
 | 
			
		||||
   __cdist_type="$(__cdist_type_from_object "$__cdist_object_self")"
 | 
			
		||||
   __cdist_type_gencode="$(__cdist_type_gencode "$__cdist_type" "$__cdist_gencode_type")"
 | 
			
		||||
   __cdist_code_output="$(__cdist_object_code "$__cdist_object_self" "$__cdist_gencode_type")"
 | 
			
		||||
 | 
			
		||||
   # export variables for the gencode script
 | 
			
		||||
   export __object_id="$(__cdist_object_id_from_object "$__cdist_object_self")"
 | 
			
		||||
   export __object="$(__cdist_object_dir "$__cdist_object_self")"
 | 
			
		||||
   export __global="$__cdist_out_dir"
 | 
			
		||||
 | 
			
		||||
   if [ -x "$__cdist_type_gencode" ]; then
 | 
			
		||||
      __cdist_run_shell "$__cdist_type_gencode" > "$__cdist_tmp_file"
 | 
			
		||||
   else
 | 
			
		||||
      if [ -e "$__cdist_type_gencode" ]; then
 | 
			
		||||
         __cdist_exit_err "$__cdist_type_gencode exists, but is not executable"
 | 
			
		||||
      fi
 | 
			
		||||
 | 
			
		||||
      # Ensure it's empty, if there is no gencode
 | 
			
		||||
      : > "$__cdist_tmp_file"
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
   # Only create code, if gencode created output
 | 
			
		||||
   if [ "$(wc -l < "$__cdist_tmp_file")" -gt 0 ]; then
 | 
			
		||||
      cat - "$__cdist_tmp_file" << eof > "$__cdist_code_output"
 | 
			
		||||
#
 | 
			
		||||
# The following code was generated by $__cdist_type_gencode
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
eof
 | 
			
		||||
      chmod u+x "${__cdist_code_output}"
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										36
									
								
								core/__cdist_object_gencode_run
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										36
									
								
								core/__cdist_object_gencode_run
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,36 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
# 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# For the given object create the code to be executed on the target.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_object_gencode_run()
 | 
			
		||||
{
 | 
			
		||||
   __cdist_object_gencode_run_object="$1"; shift
 | 
			
		||||
 | 
			
		||||
   __cdist_echo info "Generating local code "
 | 
			
		||||
   __cdist_object_gencode "$__cdist_object_gencode_run_object" \
 | 
			
		||||
      "${__cdist_name_gencode_local}"
 | 
			
		||||
 | 
			
		||||
   __cdist_echo info "Generating remote code "
 | 
			
		||||
   __cdist_object_gencode "$__cdist_object_gencode_run_object" \
 | 
			
		||||
   "${__cdist_name_gencode_remote}"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										36
									
								
								core/__cdist_object_list
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										36
									
								
								core/__cdist_object_list
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,36 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Print error and exit (perror() alike)
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_object_list()
 | 
			
		||||
{
 | 
			
		||||
   # FIXME: no local in posix
 | 
			
		||||
   local basedir="$1"; shift
 | 
			
		||||
 | 
			
		||||
   # Use subshell to prevent changing cwd in program
 | 
			
		||||
   (
 | 
			
		||||
      cd "${basedir}"
 | 
			
		||||
 | 
			
		||||
      find . -name "$__cdist_name_dot_cdist" |    \
 | 
			
		||||
         sed -e 's;^./;;' -e "s;/${__cdist_name_dot_cdist}\$;;"
 | 
			
		||||
   )
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										59
									
								
								core/__cdist_object_manifest_run
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										59
									
								
								core/__cdist_object_manifest_run
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,59 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
# 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# Run the manifest for the given object.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
__cdist_object_manifest_run()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -eq 1 ] || __cdist_usage "<object>"
 | 
			
		||||
 | 
			
		||||
   __cdist_object_self="$1"; shift
 | 
			
		||||
 | 
			
		||||
   # FIXME: rename to __cdist_object_dir (everywhere!)
 | 
			
		||||
   __cdist_cur_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
			
		||||
   __cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object_self")"
 | 
			
		||||
 | 
			
		||||
   __cdist_echo info "Checking manifest "
 | 
			
		||||
 | 
			
		||||
   __cdist_type="$(__cdist_type_from_object "$__cdist_object_self")"
 | 
			
		||||
   __cdist_manifest="$(__cdist_type_manifest "$__cdist_type")"
 | 
			
		||||
 | 
			
		||||
   if [ -f "$__cdist_manifest" ]; then
 | 
			
		||||
      if [ -x "$__cdist_manifest" ]; then
 | 
			
		||||
         # Make __cdist_manifest available for cdist-type-emulator
 | 
			
		||||
         export __cdist_manifest
 | 
			
		||||
 | 
			
		||||
         __cdist_echo info "Executing manifest "
 | 
			
		||||
         export $__cdist_name_var_object="$__cdist_cur_object_dir"
 | 
			
		||||
         export $__cdist_name_var_object_id="$__cdist_object_id"
 | 
			
		||||
         export $__cdist_name_var_type="$(__cdist_type_dir "$__cdist_type")"
 | 
			
		||||
 | 
			
		||||
         __cdist_manifest_run "$__cdist_manifest"
 | 
			
		||||
 | 
			
		||||
         # Tell cdist-object-run-all that there may be new objects
 | 
			
		||||
         touch "$__cdist_objects_created"
 | 
			
		||||
      else
 | 
			
		||||
         __cdist_exit_err "${__cdist_manifest} needs to be executable."
 | 
			
		||||
      fi
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										47
									
								
								core/__cdist_object_prepare
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										47
									
								
								core/__cdist_object_prepare
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,47 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
# 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# For the given object:
 | 
			
		||||
#  - run type explorers
 | 
			
		||||
#  - run type manifest
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_object_prepare()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -eq 1 ] || __cdist_usage "<object>"
 | 
			
		||||
 | 
			
		||||
   __cdist_object_self="$1"; shift
 | 
			
		||||
   __cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
			
		||||
   [ -d "$__cdist_object_dir" ] || __cdist_exit_err "Object undefined"
 | 
			
		||||
 | 
			
		||||
   # Export to non-core for use in manifest and gencode scripts
 | 
			
		||||
   export $__cdist_name_var_self=$__cdist_object_self
 | 
			
		||||
 | 
			
		||||
   __cdist_object_prepared="$(__cdist_object_prepared "$__cdist_object_self")"
 | 
			
		||||
   if [ ! -f "$__cdist_object_prepared" ]; then
 | 
			
		||||
      __cdist_echo info "Preparing object"
 | 
			
		||||
      __cdist_object_explorer_run "$__cdist_object_self"
 | 
			
		||||
      __cdist_object_manifest_run "$__cdist_object_self"
 | 
			
		||||
 | 
			
		||||
      # Mark this object as prepared
 | 
			
		||||
      touch "$__cdist_object_prepared"
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										74
									
								
								core/__cdist_object_run
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										74
									
								
								core/__cdist_object_run
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,74 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
# 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# For the given object:
 | 
			
		||||
#  - run type explorers
 | 
			
		||||
#  - run type manifest
 | 
			
		||||
#  - generate code
 | 
			
		||||
#  - copy object to target
 | 
			
		||||
#  - execute code on target
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_object_run()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -eq 1 ] || __cdist_usage "<object>"
 | 
			
		||||
 | 
			
		||||
   __cdist_object_self="$1"; shift
 | 
			
		||||
   __cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
			
		||||
   [ -d "$__cdist_object_dir" ] || __cdist_exit_err "Object undefined"
 | 
			
		||||
 | 
			
		||||
   # Export to non-core for use in manifest and gencode scripts
 | 
			
		||||
   export $__cdist_name_var_self=$__cdist_object_self
 | 
			
		||||
 | 
			
		||||
   # FIXME: BUG: should be named differently!
 | 
			
		||||
   # FIXME: BUG: I can be called recursively! -> variables are probably already set / overwritten!
 | 
			
		||||
   __cdist_object_finished="$(__cdist_object_finished "$__cdist_object_self")"
 | 
			
		||||
   if [ ! -f "$__cdist_object_finished" ]; then
 | 
			
		||||
      # Resolve dependencies, if any
 | 
			
		||||
      __cdist_object_require="$(__cdist_object_require "$__cdist_object_self")"
 | 
			
		||||
      if [ -f "$__cdist_object_require" ]; then
 | 
			
		||||
         # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP
 | 
			
		||||
         while read __cdist_requirement; do
 | 
			
		||||
            set -- "$@" "$__cdist_requirement"
 | 
			
		||||
         done < "$__cdist_object_require"
 | 
			
		||||
 | 
			
		||||
         while [ $# -gt 0 ]; do
 | 
			
		||||
            __cdist_requirement="$1"; shift
 | 
			
		||||
            __cdist_echo info "Resolving requirement $__cdist_requirement"
 | 
			
		||||
            # FIXME: BUG: at this point, the other __cdist_object_run may have
 | 
			
		||||
            # overwritten all our variables!
 | 
			
		||||
            __cdist_object_run "$__cdist_requirement"
 | 
			
		||||
         done
 | 
			
		||||
      fi
 | 
			
		||||
 | 
			
		||||
      __cdist_echo debug "Before gencode"
 | 
			
		||||
      __cdist_object_gencode_run "$__cdist_object_self"
 | 
			
		||||
      __cdist_echo debug "Before push"
 | 
			
		||||
      __cdist_dir push "$(__cdist_object_dir "$__cdist_object_self")" \
 | 
			
		||||
                "$(__cdist_remote_object_dir "$__cdist_object_self")"
 | 
			
		||||
      __cdist_echo debug "Before run"
 | 
			
		||||
      __cdist_object_code_run "$__cdist_object_self"
 | 
			
		||||
      __cdist_echo debug "Object run done"
 | 
			
		||||
 | 
			
		||||
      # Mark this object as done
 | 
			
		||||
      touch "$__cdist_object_finished"
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										27
									
								
								core/__cdist_run
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								core/__cdist_run
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Exit if an error occurs running something
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_run()
 | 
			
		||||
{
 | 
			
		||||
   "$@" || __cdist_echo error  "$1 exited non-zero, aborting."
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										32
									
								
								core/__cdist_run_remote
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										32
									
								
								core/__cdist_run_remote
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,32 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Run a cdist binary on the remote side
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_run_remote()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -ge 1 ] || __cdist_usage "<binary> [opts]"
 | 
			
		||||
 | 
			
		||||
   ssh "${__cdist_remote_user}@${__cdist_target_host}"   \
 | 
			
		||||
      "export PATH=\"${__cdist_remote_bin_dir}:\$PATH\";" \
 | 
			
		||||
      "export __cdist_out_object_dir=\"$__cdist_remote_out_object_dir\";" \
 | 
			
		||||
      "$@"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								core/__cdist_run_shell
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								core/__cdist_run_shell
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,34 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Exit if an error occurs when running a shell script
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_run_shell()
 | 
			
		||||
{
 | 
			
		||||
   # Prepend our path, so all cdist tools come before other tools
 | 
			
		||||
   PATH="${__cdist_out_type_bin_dir}:$PATH" sh -e "$@"
 | 
			
		||||
   if [ "$?" -ne 0 ]; then
 | 
			
		||||
      __cdist_echo error  "$1 exited non-zero"
 | 
			
		||||
      __cdist_echo warn "Faulty code:"
 | 
			
		||||
      cat "$1"
 | 
			
		||||
      __cdist_exit_err "Aborting due to non-zero exit code."
 | 
			
		||||
   fi  
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										27
									
								
								core/__cdist_tmp_removal
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								core/__cdist_tmp_removal
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Remove tmp dir
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_tmp_removal()
 | 
			
		||||
{
 | 
			
		||||
   rm -rf "${__cdist_tmp_dir}"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										49
									
								
								core/__cdist_type_build_emulation
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										49
									
								
								core/__cdist_type_build_emulation
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,49 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010-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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# Build pseudo binaries for type emulation
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_type_build_emulation()
 | 
			
		||||
{
 | 
			
		||||
   [ $# -eq 0 ] || __cdist_usage "No arguments"
 | 
			
		||||
 | 
			
		||||
   [ -f "${__cdist_out_type_bin_dir}/.marker" ] && return 0
 | 
			
		||||
 | 
			
		||||
   __cdist_type_emulator="$__cdist_abs_mydir/cdist-type-emulator"
 | 
			
		||||
 | 
			
		||||
   if [ ! -d "${__cdist_type_dir}" ]; then
 | 
			
		||||
      __cdist_exit_err "$__cdist_type_dir must exist and contain available types"
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
   # Get Types
 | 
			
		||||
   (
 | 
			
		||||
      cd "${__cdist_type_dir}"
 | 
			
		||||
      ls -1 > "${__cdist_tmp_file}"
 | 
			
		||||
   )
 | 
			
		||||
 | 
			
		||||
   # Create binaries
 | 
			
		||||
   mkdir -p "${__cdist_out_type_bin_dir}"
 | 
			
		||||
   while read __cdist_type_build_emulation_type; do
 | 
			
		||||
      ln -sf "${__cdist_type_emulator}" \
 | 
			
		||||
         "${__cdist_out_type_bin_dir}/${__cdist_type_build_emulation_type}"
 | 
			
		||||
   done < "${__cdist_tmp_file}"
 | 
			
		||||
 | 
			
		||||
   touch "${__cdist_out_type_bin_dir}/.marker"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										27
									
								
								core/__cdist_usage
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								core/__cdist_usage
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
#!/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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Print error and exit (perror() alike)
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
__cdist_usage()
 | 
			
		||||
{
 | 
			
		||||
   __cdist_exit_err "$__cdist_myname: $@"
 | 
			
		||||
}  
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue