#!/bin/sh
DIR=ati
ARCHIVE=archive
INSTALLER=install

if [ -z "$1" ]; then
 echo "Usage: $0 input [output]" >&2
 exit 1
fi

if [ ! -f "$1" ]; then
 echo "Error: input file not found!" >&2
 exit 2
fi

RUN="$1"
NEW="$2"
[ -z "$NEW" ] && NEW="$RUN.new"

echo Using: "$RUN"

rm -rf "$DIR" "$ARCHIVE" "$INSTALLER"

SKIP="$(strings "$RUN"|awk -F'"' '/^SKIP/{print $2}')"

head -$SKIP "$RUN" > "$INSTALLER"

GZIP_CMD="$(awk -F'"' '/^GZIP_CMD/{print $2}' "$INSTALLER")"
GUNZIP_CMD="$(awk -F'"' '/^GUNZIP_CMD/{print $2}' "$INSTALLER")"
COMPRESS="$(awk -F'"' '/^COMPRESS/{print $2}' "$INSTALLER")"

echo GZIP_CMD=\"$GZIP_CMD\"
echo GUNZIP_CMD=\"$GUNZIP_CMD\"
echo COMPRESS=\"$COMPRESS\"

mkdir -p "$DIR"
tail -n +$(($SKIP+1)) "$RUN" |$GUNZIP_CMD|tar -C "$DIR" -xv

echo Hint: You can edit extracted files in "$DIR" directory, use exit to continue!
bash

if which bzip2 >/dev/null; then
 GZIP_CMD="bzip2 -c9"
 GUNZIP_CMD="bzip2 -cd"
 COMPRESS="bzip2"
fi

echo GZIP_CMD=\"$GZIP_CMD\"
echo GUNZIP_CMD=\"$GUNZIP_CMD\"
echo COMPRESS=\"$COMPRESS\"

tar -C "$DIR" -cv --owner=root --group=root .|$GZIP_CMD > "$ARCHIVE"

CRCsum=$(cksum $ARCHIVE|awk '{print $1}')
MD5=$(md5sum $ARCHIVE|awk '{print $1}')
filesizes=$(ls -l "$ARCHIVE"|awk '{print $5}')
USIZE=$(du -s "$DIR"|awk '{print $1}')

sed -i 's/^\(CRCsum=\).*/\1"'"$CRCsum"'"/;
        s/^\(MD5=\).*/\1"'"$MD5"'"/;
	s/^\(filesizes=\).*/\1"'"$filesizes"'"/;
	s/^\(GZIP_CMD=\).*/\1"'"$GZIP_CMD"'"/;
	s/^\(GUNZIP_CMD=\).*/\1"'"$GUNZIP_CMD"'"/;
	s/^\(COMPRESS=\).*/\1"'"$COMPRESS"'"/;
	s/\(| eval "\).*\(" |\)/\1$GUNZIP_CMD\2/;
	s/^\(USIZE=\).*/\1"'"$USIZE"'"/' "$INSTALLER"

rm -f "$NEW"
cat "$INSTALLER" "$ARCHIVE" > "$NEW"

rm -rf "$DIR" "$ARCHIVE" "$INSTALLER"

echo SKIP=\"$SKIP\"
echo CRCsum=\"$CRCsum\"
echo MD5=\"$MD5\"
echo filesizes=\"$filesizes\"
echo USIZE=\"$USIZE\"

echo Result: $NEW written.
