#!/bin/bash # mkslack # # By Eko M. Budi # Released under GNU GPL # # May 2006: modified by John Babiak # added code to make script usable with lzma-compressed packages # function usage() { cat <<_EOF_ makeslack - make slackware txt information usage: $0 [all|new] all : create all info new : create new info _EOF_ } # needed for compatibility with .tlz archives export TAR=tar export DIRNAME=/bin/dirname export BASENAME=/bin/basename export PKGNAME=pkgname function gen_txt { if [ ! -f $1 ]; then echo "File not found: $1" exit 1; fi DNAME=`$DIRNAME $1` BNAME=`$BASENAME $1` PNAME=`$PKGNAME $1` TFILE="$DNAME/${BNAME%.tgz}.txt" echo "$PNAME: generating info" # extract install info first rm -rf install if ! $TAR xzf $1 install; then if ! $TAR xzf $1 ./install; then echo "$PNAME: no install information !" exit 1 fi fi # Ok, here we go .. if [ -f install/slack-desc ]; then cat install/slack-desc | grep -E "(^$PNAME|BUILDDATE|HOST|DISTRO)" > $TFILE else echo "$PNAME: no description !" echo "$PNAME" > $TFILE fi echo "" >> $TFILE # cleaning up rm -rf install } # this is a clone of the gen_txt function to handle .tlz archives function gen_txt_tlz { if [ ! -f $1 ]; then echo "File not found: $1" exit 1; fi DNAME=`$DIRNAME $1` BNAME=`$BASENAME $1` PNAME=`$PKGNAME $1` TFILE="$DNAME/${BNAME%.tlz}.txt" echo "$PNAME: generating info" # extract install info first rm -rf install if ! $TAR xf $1 install; then if ! $TAR xf $1 ./install; then echo "$PNAME: no install information !" exit 1 fi fi # Ok, here we go .. if [ -f install/slack-desc ]; then cat install/slack-desc | grep -E "(^$PNAME|BUILDDATE|HOST|DISTRO)" > $TFILE else echo "$PNAME: no description !" echo "$PNAME" > $TFILE fi echo "" >> $TFILE # cleaning up rm -rf install } function gen_txt_txz { if [ ! -f $1 ]; then echo "File not found: $1" exit 1; fi DNAME=`$DIRNAME $1` BNAME=`$BASENAME $1` PNAME=`$PKGNAME $1` TFILE="$DNAME/${BNAME%.txz}.txt" echo "$PNAME: generating info" # extract install info first rm -rf install if ! $TAR xJf $1 install; then if ! $TAR xJf $1 ./install; then echo "$PNAME: no install information !" exit 1 fi fi # Ok, here we go .. if [ -f install/slack-desc ]; then cat install/slack-desc | grep -E "(^$PNAME|BUILDDATE|HOST|DISTRO)" > $TFILE else echo "$PNAME: no description !" echo "$PNAME" > $TFILE fi echo "" >> $TFILE # cleaning up rm -rf install } ############################################# # main program case "$1" in all) for pkg in `find . -type f -name '*.tgz' -print`; do gen_txt $pkg done for pkg in `find . -type f -name '*.tlz' -print`; do gen_txt_tlz $pkg done for pkg in `find . -type f -name '*.txz' -print`; do gen_txt_txz $pkg done ;; new) for pkg in `find . -type f -name '*.tgz' -print`; do if [ $pkg -nt ${pkg%tgz}txt ]; then gen_txt $pkg fi done for pkg in `find . -type f -name '*.tlz' -print`; do if [ $pkg -nt ${pkg%tlz}txt ]; then gen_txt_tlz $pkg fi done for pkg in `find . -type f -name '*.txz' -print`; do if [ $pkg -nt ${pkg%txz}txt ]; then gen_txt_txz $pkg fi done ;; pkg) if [ -n "$2" ]; then gen_txt $2 else usage fi ;; *) usage ;; esac