tazpkg rev 54

Improved 'search' (search name [-i|-l|-m]
author Christophe Lincoln <pankso@slitaz.org>
date Wed Feb 27 19:12:12 2008 +0100 (2008-02-27)
parents a47e6c9fa7ef
children 77cd0a789c38
files tazpkg
line diff
     1.1 --- a/tazpkg	Wed Feb 27 18:04:40 2008 +0100
     1.2 +++ b/tazpkg	Wed Feb 27 19:12:12 2008 +0100
     1.3 @@ -91,7 +91,7 @@
     1.4    info          Print informations about the package.
     1.5    desc          Print description of a package (if it exist).
     1.6    list-files    List of files installed with the package.
     1.7 -  search        Search for a package by pattern or name.
     1.8 +  search        Search for a package by pattern or name (options: -i|-l|-m).
     1.9    search-file	Search for file(s) in all installed packages files.
    1.10    install       Install a local (*.tazpkg) package (--forced to force).
    1.11    install-list  Install all packages from a list of packages.
    1.12 @@ -406,6 +406,78 @@
    1.13  _EOT_
    1.14  }
    1.15  
    1.16 +# Search pattern in installed packages.		
    1.17 +search_in_installed_packages()
    1.18 +{
    1.19 +	echo "Installed packages"
    1.20 +	echo "================================================================================"
    1.21 +	list=`ls -1 $INSTALLED | grep "$PATTERN"`
    1.22 +	for pkg in $list
    1.23 +	do
    1.24 +		. $INSTALLED/$pkg/receipt
    1.25 +		echo -n "$PACKAGE "
    1.26 +		echo -en "\033[24G $VERSION"
    1.27 +		echo -e "\033[42G $CATEGORY"
    1.28 +		packages=$(($packages+1))
    1.29 +	done
    1.30 +	# Set correct ending messages.
    1.31 +	if [ "$packages" = "" ]; then
    1.32 +		echo "0 installed packages found for : $PATTERN"
    1.33 +		echo ""
    1.34 +	else
    1.35 +		echo "================================================================================"
    1.36 +		echo "$packages installed package(s) found for : $PATTERN"
    1.37 +		echo ""
    1.38 +	fi
    1.39 +}
    1.40 +
    1.41 +# Search in packages.list for avalaible pkgs.	
    1.42 +search_in_packages_list()
    1.43 +{
    1.44 +	echo "Available packages name-version"
    1.45 +	echo "================================================================================"
    1.46 +	if [ -f "$LOCALSTATE/packages.list" ]; then
    1.47 +		cat $LOCALSTATE/packages.list | grep "$PATTERN"
    1.48 +		packages=`cat $LOCALSTATE/packages.list | grep "$PATTERN" | wc -l`
    1.49 +	else
    1.50 +		echo -e "
    1.51 +No 'packages.list' found to check for mirrored packages. For more results,
    1.52 +please run once 'tazpkg recharge' as root before searching.\n"
    1.53 +	fi
    1.54 +	if [ "$packages" = "0" ]; then
    1.55 +		echo "0 available packages found for : $PATTERN"
    1.56 +		echo ""
    1.57 +	else
    1.58 +		echo "================================================================================"
    1.59 +		echo "$packages available package(s) found for : $PATTERN"
    1.60 +		echo ""
    1.61 +	fi
    1.62 +}
    1.63 +
    1.64 +# search --mirror: Search in packages.txt for avalaible pkgs and give more 
    1.65 +# infos than --list or default.	
    1.66 +search_in_packages_txt()
    1.67 +{
    1.68 +	echo "Matching packages name with version and desc"
    1.69 +	echo "================================================================================"
    1.70 +	if [ -f "$LOCALSTATE/packages.txt" ]; then
    1.71 +		cat $LOCALSTATE/packages.txt | grep -A 2 "^$PATTERN"
    1.72 +		packages=`cat $LOCALSTATE/packages.txt | grep "^$PATTERN" | wc -l`
    1.73 +	else
    1.74 +		echo -e "
    1.75 +No 'packages.txt' found to check for mirrored packages. For more results,
    1.76 +please run once 'tazpkg recharge' as root before searching.\n"
    1.77 +	fi
    1.78 +	if [ "$packages" = "0" ]; then
    1.79 +		echo "0 available packages found for : $PATTERN"
    1.80 +		echo ""
    1.81 +	else
    1.82 +		echo "================================================================================"
    1.83 +		echo "$packages available package(s) found for : $PATTERN"
    1.84 +		echo ""
    1.85 +	fi
    1.86 +}
    1.87 +
    1.88  ###################
    1.89  # Tazpkg commands #
    1.90  ###################
    1.91 @@ -609,52 +681,27 @@
    1.92  	search)
    1.93  		# Search for a package by pattern or name.
    1.94  		#
    1.95 -		if [ -z "$2" ]; then
    1.96 +		PATTERN="$2"
    1.97 +		if [ -z "$PATTERN" ]; then
    1.98  			echo -e "\nPlease specify a pattern or a package name to search."
    1.99 -			echo -e "Example : 'tazpkg search paint'. \n"
   1.100 +			echo -e "Example : 'tazpkg search paint'.\n"
   1.101  			exit 0
   1.102  		fi
   1.103  		echo ""
   1.104 -		echo -e "\033[1mSearch result for :\033[0m $2"
   1.105 +		echo -e "\033[1mSearch result for :\033[0m $PATTERN"
   1.106  		echo ""
   1.107 -		echo "Installed packages"
   1.108 -		echo "================================================================================"
   1.109 -		list=`ls -1 $INSTALLED | grep $2`
   1.110 -		for pkg in $list
   1.111 -		do
   1.112 -			. $INSTALLED/$pkg/receipt
   1.113 -			echo -n "$PACKAGE "
   1.114 -			echo -en "\033[24G $VERSION"
   1.115 -			echo -e "\033[42G $CATEGORY"
   1.116 -			packages=$(($packages+1))
   1.117 -		done
   1.118 -		# Set correct ending messages.
   1.119 -		if [ "$packages" = "" ]; then
   1.120 -			echo "0 installed packages found for : $2"
   1.121 -			echo ""
   1.122 -		else
   1.123 -			echo "================================================================================"
   1.124 -			echo "$packages installed package(s) found for : $2"
   1.125 -			echo ""
   1.126 -		fi
   1.127 -		echo "Available packages"
   1.128 -		echo "================================================================================"
   1.129 -		if [ -f "$LOCALSTATE/packages.list" ]; then
   1.130 -			cat $LOCALSTATE/packages.list | grep $2
   1.131 -			packages=`cat $LOCALSTATE/packages.list | grep $2 | wc -l`
   1.132 -		else
   1.133 -			echo -e "
   1.134 -No 'packages.list' found to check for mirrored packages. For more results,
   1.135 -please run once 'tazpkg recharge' as root before searching.\n"
   1.136 -		fi
   1.137 -		if [ "$packages" = "0" ]; then
   1.138 -			echo "0 available packages found for : $2"
   1.139 -			echo ""
   1.140 -		else
   1.141 -			echo "================================================================================"
   1.142 -			echo "$packages available package(s) found for : $2"
   1.143 -			echo ""
   1.144 -		fi
   1.145 +		# Default is to search in installed pkgs and the raw list.
   1.146 +		case $3 in
   1.147 +			-i|--installed)
   1.148 +				search_in_installed_packages ;;
   1.149 +			-l|--list)
   1.150 +				search_in_packages_list ;;
   1.151 +			-m|--mirror)
   1.152 +				search_in_packages_txt ;;
   1.153 +			*)
   1.154 +				search_in_installed_packages
   1.155 +				search_in_packages_list ;;
   1.156 +		esac
   1.157  		;;
   1.158  	search-file)
   1.159  		# Search for a file by pattern or name in all files.list.
   1.160 @@ -671,11 +718,11 @@
   1.161  		# name and the full path to the file(s).
   1.162  		for pkg in $INSTALLED/*
   1.163  		do
   1.164 -			if grep -q $2 $pkg/files.list; then
   1.165 +			if grep -q "$2" $pkg/files.list; then
   1.166  				. $pkg/receipt
   1.167  				echo ""
   1.168  				echo -e "\033[1mPackage $PACKAGE :\033[0m"
   1.169 -				grep $2 $pkg/files.list
   1.170 +				grep "$2" $pkg/files.list
   1.171  				files=`grep $2 $pkg/files.list | wc -l`
   1.172  				match=$(($match+$files))
   1.173  			fi