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 |