#!/bin/bash
#
# This script adds all files belonging to a package to a txz file
# 

# This is the rewritten version (II) of archivepkg 
# 
# 0.0.1   08.12.2013  Initial version


# Author: Armin Meyer-Larsen

MYNAME=$(basename $0)
PKGROOT=${PKGROOT:-/}
PKGVER=2 # our version
CR_DATE="2013-12-08.18:25 CET"  # date '+%Y-%m-%d.%H:%M %Z'

# Slackware
SLACKDB=${SLACKDB:-$PKGROOT/var/log/packages}
SLACKSCRIPTDIR=${SLACKSCRIPTDIR:-$PKGROOT/var/log/scripts}
[ -f ${PKGROOT}/etc/slackware-version ] && SLACKVERSION=$(cat ${PKGROOT}/etc/slackware-version | cut -d" " -f2) || SLACKVERSION=0.0.0

TMP=${TMP:-/tmp}

# FEXIT
# =====
function fexit
{
 RC=${RC:-0}
 [ -n "$RCWD" ] && cd $RCWD
 exit $RC
}

trap fexit 1 2 3 14 15 19


# FHELP()
# =======
function fhelp
{
 echo
 echo " Usage: $MYNAME <Slackware Package>"
 echo
}


# GETOPTS()
# =========
while [ "$#" -gt "0" ]
do
  case "$1" in
    # HELP
    "-h" | "--help" )
      fhelp
      exit 0
      ;;

    *)
      PKGLIST="$PKGLIST $1"
      shift 
      ;;
  esac
done

[ -z "$PKGLIST" ] && { fhelp 1>&2 ; exit 1 ; } 



# MAIN()
# ======
RCWD=$PWD
for _pkg in $PKGLIST
do
  PKG=$(basename "$_pkg")
  [ -f "$SLACKDB/$(basename $(basename $PKG .txz) .tgz)" ] || { fhelp 1>&2 ; exit 1 ; }

  # create tempdir
  mkdir $TMP/$PKG || exit 2
  cd $PKGROOT || exit 2

  # copy everything over
  FILESTOCOLLECT=$(sed -n '/^FILE LIST:/,/^EOF/p' $SLACKDB/$PKG | egrep -v '^FILE LIST:|/$')
  tar cpBf - $FILESTOCOLLECT | ( cd $TMP/$PKG && tar xvpBf - )

  # create installscript and packahe decription
  mkdir $TMP/$PKG/install
  cp -f $SLACKSCRIPTDIR/$PKG $TMP/$PKG/install/doinst.sh
  sed -n '/^PACKAGE DESCRIPTION:/,/^FILE LIST:/p' $SLACKDB/$PKG | egrep -v '^PACKAGE DESCRIPTION:|^FILE LIST:' > $TMP/$PKG/install/slack-desc

  # make package
  cd $TMP/$PKG || exit 2
  makepkg --linkadd n --chown n $TMP/$PKG.txz

  # cleanup
  [ ! -z "$PKG" ] && rm -rf $TMP/$PKG
done

cd $RCWD
