forked from ungleich-public/cdist
		
	__file: --type symlink supported
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								9e7a430372
							
						
					
				
			
			
				commit
				
					
						a190ee13b8
					
				
			
		
					 3 changed files with 53 additions and 36 deletions
				
			
		| 
						 | 
					@ -13,7 +13,7 @@ case "$__target_host" in
 | 
				
			||||||
   # Everybody has this
 | 
					   # Everybody has this
 | 
				
			||||||
   localhost)
 | 
					   localhost)
 | 
				
			||||||
      # Usual example
 | 
					      # Usual example
 | 
				
			||||||
      __file test --type file --destination /tmp/cdist-testfile
 | 
					      __file test --type symlink --source /etc/cdist-configured --destination /tmp/cdist-testfile
 | 
				
			||||||
   ;;
 | 
					   ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   #
 | 
					   #
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,8 +22,6 @@
 | 
				
			||||||
# example for typewrites later
 | 
					# example for typewrites later
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type="$(cat "$__object/parameter/type")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If destination was specified, do not use the id
 | 
					# If destination was specified, do not use the id
 | 
				
			||||||
if [ -f "$__object/parameter/destination" ]; then
 | 
					if [ -f "$__object/parameter/destination" ]; then
 | 
				
			||||||
   destination="$(cat "$__object/parameter/destination")"
 | 
					   destination="$(cat "$__object/parameter/destination")"
 | 
				
			||||||
| 
						 | 
					@ -40,6 +38,7 @@ if ! $(echo "$destination" | grep -q ^/); then
 | 
				
			||||||
   exit 1
 | 
					   exit 1
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Use correct md5sum binary - MacOSx is different here
 | 
				
			||||||
case "$os" in
 | 
					case "$os" in
 | 
				
			||||||
   macosx)
 | 
					   macosx)
 | 
				
			||||||
      md5sum="md5"
 | 
					      md5sum="md5"
 | 
				
			||||||
| 
						 | 
					@ -50,45 +49,62 @@ case "$os" in
 | 
				
			||||||
   ;;  
 | 
					   ;;  
 | 
				
			||||||
esac
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Copy source if existing
 | 
					type="$(cat "$__object/parameter/type")"
 | 
				
			||||||
# FIXME: directory handling not supported - add recursive flag?
 | 
					 | 
				
			||||||
if [ -f "$__object/parameter/source" ]; then
 | 
					 | 
				
			||||||
   source="$(cat "$__object/parameter/source")"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if [ -f "$source" ]; then
 | 
					case "$type" in
 | 
				
			||||||
      local_md5sum="$($md5sum < "$source")"
 | 
					   directory)
 | 
				
			||||||
      remote_md5sum="$(cat "$__object/explorer/md5sum")"
 | 
					      if [ -f "$__object/parameter/source" ]; then
 | 
				
			||||||
 | 
					         echo "Source not supported for directory currently - FIXME" >&2
 | 
				
			||||||
      # Is md5sum the right approach?
 | 
					         exit 1
 | 
				
			||||||
      if [ "$local_md5sum" != "$remote_md5sum" ]; then
 | 
					      else
 | 
				
			||||||
         # FIXME: This is ugly and hardcoded, replace after 1.0!
 | 
					         if [ no = "$(cat "$__object/explorer/exists")" ]; then
 | 
				
			||||||
         # Probably a better aproach is to have the user configured
 | 
					 | 
				
			||||||
         # ~/.ssh/config to contain the right username
 | 
					 | 
				
			||||||
         # Probably describe it in cdist-quickstart...
 | 
					 | 
				
			||||||
         scp "$source" "root@${__target_host}:${destination}"
 | 
					 | 
				
			||||||
      fi
 | 
					 | 
				
			||||||
   fi
 | 
					 | 
				
			||||||
# No source? Create empty file/dir
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
   # Only touch / create if it does not exist
 | 
					 | 
				
			||||||
   if [ no = "$(cat "$__object/explorer/exists")" ]; then
 | 
					 | 
				
			||||||
      case "$type" in
 | 
					 | 
				
			||||||
         directory)
 | 
					 | 
				
			||||||
            echo mkdir \"$destination\"
 | 
					            echo mkdir \"$destination\"
 | 
				
			||||||
         ;;
 | 
					         fi
 | 
				
			||||||
 | 
					      fi
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         file)
 | 
					   file)
 | 
				
			||||||
 | 
					      if [ -f "$__object/parameter/source" ]; then
 | 
				
			||||||
 | 
					         source="$(cat "$__object/parameter/source")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         if [ -f "$source" ]; then
 | 
				
			||||||
 | 
					            local_md5sum="$($md5sum < "$source")"
 | 
				
			||||||
 | 
					            remote_md5sum="$(cat "$__object/explorer/md5sum")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # FIXME: Is md5sum the right approach?
 | 
				
			||||||
 | 
					            if [ "$local_md5sum" != "$remote_md5sum" ]; then
 | 
				
			||||||
 | 
					               # FIXME: This is ugly and hardcoded, replace after 1.0!
 | 
				
			||||||
 | 
					               # Probably a better aproach is to have the user configured
 | 
				
			||||||
 | 
					               # ~/.ssh/config to contain the right username
 | 
				
			||||||
 | 
					               # Probably describe it in cdist-quickstart...
 | 
				
			||||||
 | 
					               scp "$source" "root@${__target_host}:${destination}"
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					         fi
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					         if [ no = "$(cat "$__object/explorer/exists")" ]; then
 | 
				
			||||||
            echo touch \"$destination\"
 | 
					            echo touch \"$destination\"
 | 
				
			||||||
         ;;
 | 
					         fi
 | 
				
			||||||
 | 
					      fi
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         *)
 | 
					   symlink)
 | 
				
			||||||
            echo "Unsupported type: \"$type\"" >&2
 | 
					      if [ ! -f "$__object/parameter/source" ]; then
 | 
				
			||||||
            exit 1
 | 
					         echo "Source required for symlink" >&2
 | 
				
			||||||
         ;;
 | 
					         exit 1
 | 
				
			||||||
      esac
 | 
					      fi
 | 
				
			||||||
   fi
 | 
					      source="$(cat "$__object/parameter/source")"
 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # FIXME: handle directories or document & ignore?
 | 
				
			||||||
 | 
					      echo ln -sf \"$source\" \"$destination\"
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   *)
 | 
				
			||||||
 | 
					      echo "Unsupported type: \"$type\"" >&2
 | 
				
			||||||
 | 
					      exit 1
 | 
				
			||||||
 | 
					   ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Mode settings
 | 
				
			||||||
if [ -f "$__object/parameter/mode" ]; then
 | 
					if [ -f "$__object/parameter/mode" ]; then
 | 
				
			||||||
   mode="$(cat "$__object/parameters/mode")"
 | 
					   mode="$(cat "$__object/parameters/mode")"
 | 
				
			||||||
   echo chmod \"$mode\" \"$destination\"
 | 
					   echo chmod \"$mode\" \"$destination\"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@
 | 
				
			||||||
	* Update regexp used for sane characters
 | 
						* Update regexp used for sane characters
 | 
				
			||||||
	* Allow types without parameters
 | 
						* Allow types without parameters
 | 
				
			||||||
	* Allow type to be singleton (DOCUMENTATION MISSING)
 | 
						* Allow type to be singleton (DOCUMENTATION MISSING)
 | 
				
			||||||
 | 
						* Type __file learned --type symlink
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1.0.2: 2011-03-09
 | 
					1.0.2: 2011-03-09
 | 
				
			||||||
	* Add manpages: cdist-type, cdist-type__file, cdist-reference, cdist-explorer
 | 
						* Add manpages: cdist-type, cdist-type__file, cdist-reference, cdist-explorer
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue