spk annotate spk @ rev 68

bunch of improvments to download
author Christophe Lincoln <pankso@slitaz.org>
date Fri May 18 21:24:30 2012 +0200 (2012-05-18)
parents 885b195a5d69
children 0cb21eb5cf20
rev   line source
pankso@19 1 #!/bin/sh
pankso@19 2 #
pankso@19 3 # Spk - The SliTaz Packages toolset. Read the README before adding or
pankso@19 4 # modifing any code in spk!
pankso@19 5 #
pankso@19 6 # Copyright (C) SliTaz GNU/Linux - BSD License
pankso@19 7 # Author: See AUTHORS files
pankso@19 8 #
pankso@68 9 . /usr/lib/slitaz/libspk.sh
pankso@68 10 #. lib/libspk.sh
pankso@19 11
pankso@19 12 #
pankso@19 13 # Functions
pankso@19 14 #
pankso@19 15
pankso@19 16 # Help and usage
pankso@19 17 usage() {
pankso@19 18 name=$(basename $0)
pankso@19 19 cat << EOT
pankso@19 20
pankso@19 21 $(boldify $(gettext "Usage:")) $name [packages|--options]
pankso@19 22
pankso@19 23 $(gettext "SliTaz Packages toolset")
pankso@19 24
pankso@19 25 $(boldify $(gettext "Commands:"))
pankso@20 26 info $(gettext "Display path, mirror and other stats")
pankso@20 27 activity $(gettext "Display packages activities")
pankso@67 28 clean $(gettext "Clean cache and temporary files")
pankso@19 29
pankso@19 30 $(boldify $(gettext "Options:"))
pankso@20 31 --add $(gettext "Install packages if mirrored")
pankso@20 32 --rm $(gettext "Remove installed packages")
pankso@67 33 --get $(gettext "Download packages specified on cmdline")
pankso@20 34 --block $(gettext "Add packages to the blocked list")
pankso@20 35 --unblock $(gettext "Remove packages from the blocked list")
pankso@66 36 --log $(gettext "Show package install and upgrade log")
pankso@67 37 --cache $(gettext "Used with --get to download in cache")
pankso@67 38 --forced $(gettext "Force packages reinstall or download")
pankso@36 39 --root= $(gettext "Set the root file system path")
pankso@19 40 --debug $(gettext "Display some usefull debug information")
pankso@19 41
pankso@19 42 $(boldify $(gettext "Examples:"))
pankso@19 43 $name package1 package2 packageN
pankso@20 44 $name package package2 --block
pankso@19 45
pankso@19 46 EOT
pankso@19 47 exit 0
pankso@19 48 }
pankso@19 49
pankso@19 50 #
pankso@19 51 # Commands and exit
pankso@19 52 #
pankso@19 53
pankso@19 54 case "$1" in
pankso@19 55 ""|*usage|*help) usage ;;
pankso@19 56 info)
pankso@36 57 cache="$(du -sh $CACHE_DIR | awk '{print $1 " " $2}')"
pankso@60 58 extra=$(ls $extradb | wc -l)
pankso@19 59 newline
pankso@59 60 boldify "Spk info"
pankso@19 61 separator
pankso@60 62 gettext "Architecture :"; echo " $SLITAZ_ARCH"
pankso@60 63 gettext "Database :"; echo " $installed"
pankso@60 64 gettext "Cache info :"; echo " $cache"
pankso@60 65 gettext "Mirror URL :"; echo " $(cat $mirrorurl)"
pankso@60 66 gettext "Extra mirrors :"; echo " $extra"
pankso@19 67 count_installed
pankso@19 68 count_mirrored
pankso@19 69 separator
pankso@19 70 newline && exit 0 ;;
pankso@19 71 activity)
pankso@58 72 # --lines=NB
pankso@58 73 : ${lines=18}
pankso@19 74 newline
pankso@19 75 boldify "Spk Activity"
pankso@19 76 separator
pankso@58 77 cat $activity | tail -n $lines
pankso@19 78 separator && newline
pankso@19 79 exit 0 ;;
pankso@67 80 clean)
pankso@67 81 newline
pankso@67 82 boldify "Spk Clean"
pankso@67 83 separator
pankso@67 84 size=$(du -sh $CACHE_DIR | awk '{print $1}')
pankso@67 85 gettext "Cleaning cache:"; echo -n " $CACHE_DIR ($size)"
pankso@67 86 rm -rf $CACHE_DIR/* && status
pankso@67 87 gettext "Cleaning tmp :"; echo -n " $(dirname $tmpdir)"
pankso@67 88 rm -rf $(dirname $tmpdir) && status
pankso@67 89 separator && newline
pankso@67 90 exit 0 ;;
pankso@19 91 esac
pankso@19 92
pankso@19 93 #
pankso@19 94 # Handle packages: spk package1 ... packageN
pankso@19 95 #
pankso@19 96
pankso@67 97 #debug "cmdline: $@"
pankso@19 98 count=0
pankso@19 99
pankso@19 100 for pkg in $@
pankso@19 101 do
pankso@67 102 # Handle general: --options
pankso@67 103 case " $@ " in
pankso@67 104 *\ --get\ *)
pankso@67 105 # We want: package-version.tazpkg
pankso@67 106 package_full=$(full_package $pkg)
pankso@67 107 mirrored_pkg $pkg
pankso@67 108 [ "$mirrored" ] || continue
pankso@67 109 [ "$count" == 0 ] && newline
pankso@67 110 count=$(($count + 1))
pankso@67 111 download $package_full $mirror
pankso@68 112 unset_mirrored
pankso@67 113 newline && continue ;;
pankso@67 114 esac
pankso@19 115 # Installed ?
pankso@19 116 if [ -d "$installed/$pkg" ]; then
pankso@20 117 # Handle: --options
pankso@20 118 case " $@ " in
pankso@20 119 *\ --block\ *)
pankso@20 120 check_root
pankso@20 121 [ -d "$installed/$pkg" ] || continue
pankso@20 122 if grep -qs ^${pkg}$ $blocked; then
pankso@20 123 echo -n "$(boldify "$pkg") "
pankso@20 124 gettext "is already blocked"; newline
pankso@20 125 else
pankso@20 126 gettext "Blocking package:"; echo -n " $pkg"
pankso@20 127 echo $pkg >> $blocked
pankso@20 128 log "Blocked package: $pkg" && status
pankso@66 129 fi && continue ;;
pankso@20 130 *\ --unblock\ *)
pankso@20 131 check_root
pankso@20 132 [ -d "$installed/$pkg" ] || continue
pankso@20 133 if grep -qs ^${pkg}$ $blocked; then
pankso@20 134 gettext "Unblocking package:"; echo -n " $pkg"
pankso@20 135 sed -i /"^${pkg}$"/d $blocked
pankso@20 136 log "Unblocked package: $pkg" && status
pankso@20 137 else
pankso@20 138 echo -n "$(boldify "$pkg") "
pankso@20 139 gettext "is not blocked"; newline
pankso@66 140 fi && continue ;;
pankso@20 141 *\ --rm\ *)
pankso@20 142 [ -d "$installed/$pkg" ] || continue
pankso@20 143 spk-rm $pkg --count=$count
pankso@20 144 count=$(($count + 1))
pankso@20 145 continue ;;
pankso@58 146 *\ --log\ *)
pankso@58 147 # Display packges log's
pankso@58 148 if [ -f "$logdir/$pkg/install.log" ]; then
pankso@58 149 count=$(($count + 1))
pankso@58 150 [ "$count" == "1" ] && newline
pankso@58 151 colorize "$(gettext "Install log for:"; echo " $pkg")" 36
pankso@58 152 separator
pankso@58 153 cat $logdir/$pkg/install.log
pankso@58 154 else
pankso@58 155 gettext "Any install log for:"; boldify " $pkg"
pankso@58 156 fi
pankso@58 157 if [ -f "$logdir/$pkg/up.log" ]; then
pankso@58 158 colorize "$(gettext "Upgrade log for:"; echo " $pkg")" 36
pankso@58 159 separator
pankso@58 160 cat $logdir/$pkg/up.log
pankso@58 161 else
pankso@67 162 colorize "$(gettext "Any upgrade log for:"; echo " $pkg")" 36
pankso@58 163 newline
pankso@66 164 fi && continue ;;
pankso@20 165 esac
pankso@20 166 count=$(($count + 1))
pankso@19 167 [ "$count" == 1 ] && newline
pankso@19 168 unset_receipt
pankso@19 169 . $installed/$pkg/receipt
pankso@19 170 boldify "$(gettext "Package") $pkg"
pankso@19 171 separator
pankso@22 172 gettext "Status :"; colorize " installed" 32
pankso@19 173 receipt_info
pankso@19 174 separator && newline
pankso@19 175 continue
pankso@19 176 fi
pankso@19 177 # Mirrored ?
pankso@67 178 mirrored_pkg $pkg
pankso@19 179 if [ "$mirrored" ]; then
pankso@67 180 # Handle mirrored: --options
pankso@20 181 case " $@ " in
pankso@20 182 *\ --add\ *)
pankso@58 183 spk-add $pkg --count=$count
pankso@58 184 count=$(($count + 1))
pankso@58 185 continue ;;
pankso@20 186 esac
pankso@21 187 count=$(($count + 1))
pankso@20 188 [ "$count" == 1 ] && newline
pankso@20 189 boldify "$(gettext "Package") $pkg"
pankso@20 190 separator
pankso@22 191 gettext "Status :"; colorize " not installed" 31
pankso@20 192 echo "$mirrored" | awk 'BEGIN { FS = "|" } ; { print \
pankso@20 193 "Version :" $2 "\n" \
pankso@20 194 "Short desc :" $3 "\n" \
pankso@20 195 "Category :" $4 }'
pankso@20 196 separator && newline
pankso@19 197 continue
pankso@19 198 fi
pankso@67 199 unset mirrored
pankso@19 200 # Skip options such as --confirm or unknow package
pankso@19 201 case "$pkg" in
pankso@19 202 --*) continue ;;
pankso@20 203 *) gettext "WARNING: Unknow package"; echo ": $pkg"
pankso@19 204 esac
pankso@19 205 done
pankso@19 206 exit 0