spk rev 20

spk: add support for blocked pkgs: spk pkg1 ... pkgN --block
author Christophe Lincoln <pankso@slitaz.org>
date Tue May 15 14:52:29 2012 +0200 (2012-05-15)
parents b9ca2ddbafa1
children 320af418fedc
files spk
line diff
     1.1 --- a/spk	Tue May 15 14:20:23 2012 +0200
     1.2 +++ b/spk	Tue May 15 14:52:29 2012 +0200
     1.3 @@ -23,17 +23,20 @@
     1.4  $(gettext "SliTaz Packages toolset")
     1.5  
     1.6  $(boldify $(gettext "Commands:"))
     1.7 -  info     $(gettext "Display path, mirror and other stats")
     1.8 -  activity $(gettext "Display packages activities")
     1.9 +  info        $(gettext "Display path, mirror and other stats")
    1.10 +  activity    $(gettext "Display packages activities")
    1.11  
    1.12  $(boldify $(gettext "Options:"))
    1.13 -  --block     $(gettext "TODO")
    1.14 +  --add       $(gettext "Install packages if mirrored")
    1.15 +  --rm        $(gettext "Remove installed packages")
    1.16 +  --block     $(gettext "Add packages to the blocked list")
    1.17 +  --unblock   $(gettext "Remove packages from the blocked list")
    1.18    --root      $(gettext "Set the root file system path")
    1.19    --debug     $(gettext "Display some usefull debug information")
    1.20  
    1.21  $(boldify $(gettext "Examples:"))
    1.22    $name package1 package2 packageN
    1.23 -  $name package --block
    1.24 +  $name package package2 --block
    1.25  
    1.26  EOT
    1.27  	exit 0
    1.28 @@ -78,16 +81,41 @@
    1.29  
    1.30  for pkg in $@
    1.31  do
    1.32 -	# Handle: --options
    1.33 -	case " $@ " in
    1.34 -		*\ --rm\ *)
    1.35 -			spk-rm $pkg --count=$count
    1.36 -			count=$(($count + 1))
    1.37 -			continue ;;
    1.38 -	esac
    1.39 -	count=$(($count + 1))
    1.40  	# Installed ?
    1.41  	if [ -d "$installed/$pkg" ]; then
    1.42 +		# Handle: --options
    1.43 +		case " $@ " in
    1.44 +			*\ --block\ *)
    1.45 +				check_root
    1.46 +				[ -d "$installed/$pkg" ] || continue
    1.47 +				if grep -qs ^${pkg}$ $blocked; then
    1.48 +					echo -n "$(boldify "$pkg") "
    1.49 +					gettext "is already blocked"; newline
    1.50 +				else
    1.51 +					gettext "Blocking package:"; echo -n " $pkg"
    1.52 +					echo $pkg >> $blocked
    1.53 +					log "Blocked package: $pkg" && status
    1.54 +				fi
    1.55 +				continue ;;
    1.56 +			*\ --unblock\ *)
    1.57 +				check_root
    1.58 +				[ -d "$installed/$pkg" ] || continue
    1.59 +				if grep -qs ^${pkg}$ $blocked; then
    1.60 +					gettext "Unblocking package:"; echo -n " $pkg"
    1.61 +					sed -i /"^${pkg}$"/d $blocked
    1.62 +					log "Unblocked package: $pkg" && status
    1.63 +				else
    1.64 +					echo -n "$(boldify "$pkg") "
    1.65 +					gettext "is not blocked"; newline
    1.66 +				fi
    1.67 +				continue ;;
    1.68 +			*\ --rm\ *)
    1.69 +				[ -d "$installed/$pkg" ] || continue
    1.70 +				spk-rm $pkg --count=$count
    1.71 +				count=$(($count + 1))
    1.72 +				continue ;;
    1.73 +		esac
    1.74 +		count=$(($count + 1))
    1.75  		[ "$count" == 1 ] && newline
    1.76  		unset_receipt
    1.77  		. $installed/$pkg/receipt
    1.78 @@ -101,26 +129,27 @@
    1.79  	# Mirrored ?
    1.80  	mirrored=$(grep "^$pkg |" $pkgsdesc)
    1.81  	if [ "$mirrored" ]; then
    1.82 -		# Handle: --add
    1.83 -		if [ "$add" ]; then
    1.84 -			echo "TODO: test 'spk-add $pkg'"
    1.85 -		else
    1.86 -			[ "$count" == 1 ] && newline
    1.87 -			boldify "$(gettext "Package") $pkg"
    1.88 -			separator
    1.89 -			gettext "Status     : not installed"; echo ""
    1.90 -			echo "$mirrored" | awk 'BEGIN { FS = "|" } ; { print \
    1.91 -				"Version    :" $2 "\n" \
    1.92 -				"Short desc :" $3 "\n" \
    1.93 -				"Category   :" $4 }'
    1.94 -			separator && newline
    1.95 -		fi
    1.96 +		# Handle: --options
    1.97 +		case " $@ " in
    1.98 +			*\ --add\ *)
    1.99 +				echo "TODO: test 'spk-add $pkg'"
   1.100 +				continue ;;
   1.101 +		esac
   1.102 +		[ "$count" == 1 ] && newline
   1.103 +		boldify "$(gettext "Package") $pkg"
   1.104 +		separator
   1.105 +		gettext "Status     : not installed"; echo ""
   1.106 +		echo "$mirrored" | awk 'BEGIN { FS = "|" } ; { print \
   1.107 +			"Version    :" $2 "\n" \
   1.108 +			"Short desc :" $3 "\n" \
   1.109 +			"Category   :" $4 }'
   1.110 +		separator && newline
   1.111  		continue
   1.112  	fi
   1.113  	# Skip options such as --confirm or unknow package
   1.114  	case "$pkg" in
   1.115  		--*) continue ;;
   1.116 -		*) gettext "Unknow package"; echo ": $pkg"
   1.117 +		*) gettext "WARNING: Unknow package"; echo ": $pkg"
   1.118  	esac
   1.119  done
   1.120  exit 0