spk annotate spk-archive @ rev 64
spk-archive: be busybox ash compatible
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Fri May 18 03:19:51 2012 +0200 (2012-05-18) |
parents | 07f5864f07a2 |
children | de880358af6d |
rev | line source |
---|---|
pankso@64 | 1 #!/bin/sh |
meshca@11 | 2 # |
meshca@11 | 3 # Spk-Archive - SliTaz Package Archive Manager |
meshca@11 | 4 # |
meshca@11 | 5 # NOT COMPLETE: Still need to re-write (just what was grabbed from tazpkg) |
meshca@11 | 6 # |
meshca@11 | 7 # Authors : See the AUTHORS files |
meshca@11 | 8 |
meshca@11 | 9 source /usr/lib/slitaz/libspk.sh |
meshca@11 | 10 |
meshca@11 | 11 usage() { |
meshca@11 | 12 name=$(basename $0) |
pankso@26 | 13 cat << EOT |
meshca@11 | 14 |
meshca@11 | 15 $(boldify $(gettext "Usage:")) $name [command] package |
meshca@11 | 16 |
meshca@11 | 17 $(boldify $(gettext "Commands:")) |
pankso@64 | 18 pack |
pankso@64 | 19 repack [--config] |
pankso@64 | 20 extract |
pankso@64 | 21 recompress |
meshca@11 | 22 |
meshca@11 | 23 $(boldify "$(gettext "Example:")") |
pankso@64 | 24 $name extract package |
meshca@11 | 25 |
meshca@11 | 26 EOT |
meshca@11 | 27 exit 0 |
meshca@11 | 28 } |
meshca@11 | 29 |
meshca@11 | 30 # Extract a package with cpio and gzip/lzma to the current directory. |
meshca@11 | 31 # Parameters: package_file |
meshca@11 | 32 extract_package() { |
meshca@11 | 33 local package_file=$1 |
meshca@11 | 34 local package_name=$(package_name $package_file) |
pankso@26 | 35 |
pankso@64 | 36 gettext "Extracting:"; echo " $package_name... " |
meshca@11 | 37 cpio -idm --quiet < ${package_file##*/} && rm -f ${package_file##*/} |
meshca@11 | 38 status |
pankso@26 | 39 |
pankso@64 | 40 [ "$verbose" ] && gettext "Extracting the pseudo fs... " |
pankso@32 | 41 unlzma -c fs.cpio.lzma | cpio -idm --quiet && rm fs.cpio.lzma |
pankso@64 | 42 [ "$verbose" ] && status |
meshca@11 | 43 } |
meshca@11 | 44 |
meshca@11 | 45 # Extract .tazpkg cpio archive into a directory. |
meshca@11 | 46 # Parameters: package_file results_directory |
meshca@11 | 47 extract() { |
meshca@11 | 48 local package_file=$1 |
meshca@11 | 49 local target_dir=$2 |
pankso@26 | 50 |
pankso@64 | 51 # Validate the file |
meshca@11 | 52 check_valid_tazpkg $package_file |
pankso@26 | 53 |
pankso@64 | 54 # Find the package name |
meshca@11 | 55 local package_name=$(package_name $package_file) |
meshca@11 | 56 |
meshca@11 | 57 # Create destination directory |
meshca@11 | 58 local dest_dir=$(pwd)/$package_name |
meshca@11 | 59 [ -n "$target_dir" ] && dest_dir=$target_dir/$package_name |
meshca@11 | 60 mkdir -p $dest_dir |
pankso@26 | 61 |
meshca@11 | 62 newline |
meshca@11 | 63 echo $(boldify $(gettext "Extracting:")) $package_name |
meshca@11 | 64 separator |
pankso@26 | 65 |
meshca@11 | 66 gettext "Copying original package..." |
meshca@11 | 67 cp $package_file $dest_dir |
meshca@11 | 68 status |
pankso@64 | 69 cd $dest_dir |
pankso@64 | 70 extract_package $package $package_file |
pankso@64 | 71 cd - > /dev/null |
meshca@11 | 72 separator |
pankso@64 | 73 echo -n "$package_name" |
pankso@64 | 74 gettext "is extracted to:"; echo " $dest_dir" |
meshca@11 | 75 newline |
meshca@11 | 76 } |
meshca@11 | 77 |
meshca@11 | 78 # Recompress .tazpkg cpio archive with lzma. |
meshca@11 | 79 # Parameters: package_file |
meshca@11 | 80 recompress() { |
pankso@26 | 81 local package_file=$1 |
meshca@11 | 82 valid_tazpkg $package_file |
pankso@26 | 83 |
meshca@11 | 84 local package_name=$(package_name $package_file) |
pankso@26 | 85 |
meshca@11 | 86 newline |
meshca@11 | 87 echo $(boldify $(gettext "Recompressing:")) $package_name |
meshca@11 | 88 separator |
pankso@26 | 89 |
meshca@11 | 90 mkdir -p $TMP_DIR |
pankso@26 | 91 |
meshca@11 | 92 gettext "Copying original package..." |
meshca@11 | 93 cp $package_file $TMP_DIR |
meshca@11 | 94 status |
pankso@26 | 95 |
pankso@64 | 96 cd $TMP_DIR |
pankso@64 | 97 extract_package $package_file |
pankso@64 | 98 gettext "Recompressing the fs..." |
pankso@64 | 99 find fs | cpio -o -H newc --quiet | lzma e fs.cpio.lzma -si |
pankso@64 | 100 rm -rf fs |
pankso@64 | 101 status |
pankso@64 | 102 cd - > /dev/null |
pankso@26 | 103 |
pankso@64 | 104 gettext "Creating new package..." |
meshca@11 | 105 find $TMP_DIR -print | cpio -o -H newc --quiet > \ |
meshca@11 | 106 $(basename $package_file).$$ && mv -f \ |
meshca@11 | 107 $(basename $package_file).$$ \ |
meshca@11 | 108 $(basename $package_file) |
meshca@11 | 109 status |
pankso@26 | 110 |
meshca@11 | 111 rm -rf $TMP_DIR |
meshca@11 | 112 } |
meshca@11 | 113 |
meshca@11 | 114 case $1 in |
meshca@11 | 115 extract|-e) |
meshca@11 | 116 extract_package $2 $3 ;; |
meshca@11 | 117 recompress|-r) |
meshca@11 | 118 recompress $2 ;; |
meshca@11 | 119 *) |
meshca@11 | 120 usage ;; |
meshca@11 | 121 esac |