forked from ungleich-public/cdist
		
	Merge branch 'issue/321' of https://github.com/asteven/cdist
This commit is contained in:
		
				commit
				
					
						73b54aab09
					
				
			
		
					 2 changed files with 18 additions and 14 deletions
				
			
		| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2012 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					# 2012-2014 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -34,8 +34,13 @@ case "$type" in
 | 
				
			||||||
   symbolic)
 | 
					   symbolic)
 | 
				
			||||||
      cd "$destination_dir"
 | 
					      cd "$destination_dir"
 | 
				
			||||||
      source_is=$(ls -l "$destination" | sed 's/.*-> //g')
 | 
					      source_is=$(ls -l "$destination" | sed 's/.*-> //g')
 | 
				
			||||||
      if [ -h "$destination" -a "$source_is" = "$source" ]; then
 | 
					      if [ -h "$destination" ]; then
 | 
				
			||||||
         echo present
 | 
					         # ignore trailing slashes for comparison
 | 
				
			||||||
 | 
					         if [ "${source_is%/}" = "${source%/}" ]; then
 | 
				
			||||||
 | 
					            echo present
 | 
				
			||||||
 | 
					         else
 | 
				
			||||||
 | 
					            echo wrongsource
 | 
				
			||||||
 | 
					         fi
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
         echo absent
 | 
					         echo absent
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# 2011-2012 Nico Schottelius (nico-cdist at schottelius.org)
 | 
					# 2011-2012 Nico Schottelius (nico-cdist at schottelius.org)
 | 
				
			||||||
# 2013 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					# 2013-2014 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -18,9 +18,6 @@
 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					# You should have received a copy of the GNU General Public License
 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Mostly a wrapper for ln
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
destination="/$__object_id"
 | 
					destination="/$__object_id"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,20 +47,22 @@ case "$state_should" in
 | 
				
			||||||
    present)
 | 
					    present)
 | 
				
			||||||
        if [ "$file_type" = "directory" ]; then
 | 
					        if [ "$file_type" = "directory" ]; then
 | 
				
			||||||
            # our destination is currently a directory, delete it
 | 
					            # our destination is currently a directory, delete it
 | 
				
			||||||
            cat << DONE
 | 
					            printf 'rm -rf "%s" &&\n' "$destination"
 | 
				
			||||||
rm -rf "$destination"
 | 
					        else
 | 
				
			||||||
DONE
 | 
					           if [ "$state_is" = "wrongsource" ]; then
 | 
				
			||||||
 | 
					               # our destination is a symlink but points to the wrong source,
 | 
				
			||||||
 | 
					               # delete it
 | 
				
			||||||
 | 
					               printf 'rm -f "%s" &&\n' "$destination"
 | 
				
			||||||
 | 
					           fi
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # create our link
 | 
					        # create our link
 | 
				
			||||||
        cat << DONE
 | 
					        printf 'ln %s -f "%s" "%s"\n' "$lnopt" "$source" "$destination"
 | 
				
			||||||
ln ${lnopt} -f "$source" "$destination"
 | 
					 | 
				
			||||||
DONE
 | 
					 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
    absent)
 | 
					    absent)
 | 
				
			||||||
        # only delete if it is a sym/hard link
 | 
					        # only delete if it is a sym/hard link
 | 
				
			||||||
        if [ "$file_type" = "symlink" -o "$file_type" = "hardlink" ]; then
 | 
					        if [ "$file_type" = "symlink" -o "$file_type" = "hardlink" ]; then
 | 
				
			||||||
            echo rm -f \"$destination\"
 | 
					            printf 'rm -f "%s"\n' "$destination"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue