__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