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