forked from ungleich-public/cdist
		
	__package_apt ignores --version parameter #615
This commit is contained in:
		
					parent
					
						
							
								fe8004eca2
							
						
					
				
			
			
				commit
				
					
						d6ff077156
					
				
			
		
					 2 changed files with 21 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -31,7 +31,8 @@ fi
 | 
			
		|||
packages="$(apt-cache showpkg "$name" | sed -e "1,/Reverse Provides:/d" | cut -d ' ' -f 1) $name"
 | 
			
		||||
for p in $packages; do
 | 
			
		||||
    if [ -n "$(dpkg -s "$p" 2>/dev/null | grep "^Status: install ok installed$")" ]; then
 | 
			
		||||
       echo "present $p"
 | 
			
		||||
       version=$(dpkg -s "$p" 2>/dev/null | grep "^Version:" | cut -d ' ' -f 2)
 | 
			
		||||
       echo "present $p $version"
 | 
			
		||||
       exit 0
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,6 +29,13 @@ fi
 | 
			
		|||
 | 
			
		||||
state_should="$(cat "$__object/parameter/state")"
 | 
			
		||||
 | 
			
		||||
version_param="$__object/parameter/version"
 | 
			
		||||
 | 
			
		||||
version=""
 | 
			
		||||
if [ -f "$version_param" ]; then
 | 
			
		||||
    version="$(cat "$version_param")"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -f "$__object/parameter/target-release" ]; then
 | 
			
		||||
   target_release="--target-release $(cat "$__object/parameter/target-release")"
 | 
			
		||||
else
 | 
			
		||||
| 
						 | 
				
			
			@ -47,18 +54,29 @@ state_is="$(cat "$__object/explorer/state")"
 | 
			
		|||
case "$state_is" in
 | 
			
		||||
    present*)
 | 
			
		||||
       name="$(echo "$state_is" | cut -d ' ' -f 2)"
 | 
			
		||||
       version_is="$(echo "$state_is" | cut -d ' ' -f 3)"
 | 
			
		||||
       state_is="present"
 | 
			
		||||
    ;;
 | 
			
		||||
    *)
 | 
			
		||||
       version_is=""
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
# Hint if we need to avoid questions at some point:
 | 
			
		||||
# DEBIAN_PRIORITY=critical can reduce the number of questions
 | 
			
		||||
aptget="DEBIAN_FRONTEND=noninteractive apt-get --quiet --yes --no-install-recommends -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\""
 | 
			
		||||
 | 
			
		||||
[ "$state_is" = "$state_should" ] && exit 0
 | 
			
		||||
if [ "$state_is" = "$state_should" ]; then
 | 
			
		||||
    if [ -z "$version" ] || [ "$version" = "$version_is" ]; then
 | 
			
		||||
        exit 0;
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
case "$state_should" in
 | 
			
		||||
    present)
 | 
			
		||||
        if [ -n "$version" ]; then
 | 
			
		||||
            name="${name}=${version}"
 | 
			
		||||
        fi
 | 
			
		||||
        echo $aptget install $target_release \"$name\"
 | 
			
		||||
    ;;
 | 
			
		||||
    absent)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue