| 
									
										
										
										
											2011-03-18 01:14:49 +01:00
										 |  |  | #!/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/>. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # This binary is executed on the remote side to execute code | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | . cdist-config | 
					
						
							| 
									
										
										
										
											2011-03-18 01:31:15 +01:00
										 |  |  | [ $# -eq 2 ] || __cdist_usage "<object dir> <object>" | 
					
						
							| 
									
										
										
										
											2011-03-18 01:14:49 +01:00
										 |  |  | set -ue | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-18 01:31:15 +01:00
										 |  |  | # This variable MUST be exactly like this - see __cdist_object_dir | 
					
						
							| 
									
										
										
										
											2011-03-18 01:14:49 +01:00
										 |  |  | __cdist_out_object_dir="$1"; shift | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-18 01:31:15 +01:00
										 |  |  | object="$1"; shift | 
					
						
							| 
									
										
										
										
											2011-03-18 01:14:49 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-18 01:45:54 +01:00
										 |  |  | if [ ! -d "$(__cdist_object_dir "$object")" ]; then | 
					
						
							| 
									
										
										
										
											2011-03-18 01:48:30 +01:00
										 |  |  |    __cdist_exit_err "Object $object is missing." | 
					
						
							| 
									
										
										
										
											2011-03-18 01:45:54 +01:00
										 |  |  | fi   | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-18 01:34:34 +01:00
										 |  |  | finished="$(__cdist_object_code_finished "$object")" | 
					
						
							| 
									
										
										
										
											2011-03-18 01:31:15 +01:00
										 |  |  | code="$(__cdist_object_code "$object")" | 
					
						
							|  |  |  | require="$(__cdist_object_require "$object")" | 
					
						
							| 
									
										
										
										
											2011-03-18 01:14:49 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-18 01:31:15 +01:00
										 |  |  | # Do nothing if our work has been done | 
					
						
							|  |  |  | if [ -f "$finished" ]; then | 
					
						
							|  |  |  |    exit 0 | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2011-03-18 01:14:49 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-18 01:48:30 +01:00
										 |  |  | echo "Checking    code  for $object ..." | 
					
						
							| 
									
										
										
										
											2011-03-18 01:14:49 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-18 01:31:15 +01:00
										 |  |  | if [ -f "$require" ]; then | 
					
						
							|  |  |  |    while read requirement; do | 
					
						
							| 
									
										
										
										
											2011-03-18 01:52:00 +01:00
										 |  |  |       echo "Requiring  dependency $requirement for $object ..." | 
					
						
							| 
									
										
										
										
											2011-03-18 01:35:52 +01:00
										 |  |  |       cdist-remote-code-run "$__cdist_out_object_dir" "$requirement" | 
					
						
							| 
									
										
										
										
											2011-03-18 01:31:15 +01:00
										 |  |  |    done < "$require" | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2011-03-18 01:14:49 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-18 01:31:15 +01:00
										 |  |  | if [ -e "$code" ]; then | 
					
						
							|  |  |  |    if [ -f "$code" ]; then | 
					
						
							|  |  |  |       if [ -x "$code" ]; then | 
					
						
							| 
									
										
										
										
											2011-03-18 01:52:00 +01:00
										 |  |  |          echo "Executing   code  for $object ..." | 
					
						
							| 
									
										
										
										
											2011-03-18 01:31:15 +01:00
										 |  |  |          "$code" | 
					
						
							| 
									
										
										
										
											2011-03-18 01:52:00 +01:00
										 |  |  |          touch "$finished" | 
					
						
							| 
									
										
										
										
											2011-03-18 01:14:49 +01:00
										 |  |  |       else | 
					
						
							| 
									
										
										
										
											2011-03-18 01:31:15 +01:00
										 |  |  |          __cdist_exit_err "$code exists, but is not executable." | 
					
						
							| 
									
										
										
										
											2011-03-18 01:14:49 +01:00
										 |  |  |       fi | 
					
						
							| 
									
										
										
										
											2011-03-18 01:31:15 +01:00
										 |  |  |    else | 
					
						
							|  |  |  |       __cdist_exit_err "$code exists, but is not a file." | 
					
						
							|  |  |  |    fi | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |    __cdist_exit_err "Missing code for ${object}." | 
					
						
							|  |  |  | fi |