#!/bin/sh
#230312 sfs
[ "$1" = "-1" ] && pfs1=1 && shift
[ ! "$1" ] && echo "Error. need dir" && exit 1
F(){
mkdir -p "$dn"/var/lib/dpkg/info
p="`echo "$d" |awk -F"-p-" '{print $1"-p"}'`"
p="`basename "$p"`"
find "$d" |sed 's#^'$d'##' |egrep -v '^/DEBIAN|^/var/lib/dpkg' |sort |egrep -v '^$' >"$dn"/var/lib/dpkg/info/$p-mkdpkg.list
#for m in `find "$d" -type f |sed 's/^'$d'//' |egrep -v '^/DEBIAN|^/var/lib/dpkg' |sort` ;do
find "$d" -type f |sed 's#^'$d'##' |egrep -v '^/DEBIAN|^/var/lib/dpkg' |sort| while read m ;do
    md5sum "$d$m" |sed 's# '$d'/##' >>"$dn"/var/lib/dpkg/info/$p-mkdpkg.md5sums
done

mkdir -p "$dn"/var/lib/dpkg/_status
echo "
Package: $p-mkdpkg
Status: install ok installed
Priority: optional
Section: portable
Installed-Size: `du -s "$d" |awk '{print $1}'`
Maintainer: LF
Architecture: all
Version: `date +%y.%m.%d-1`
Description: Portable soft
" >>"$dn"/var/lib/dpkg/_status/$p-mkdpkg.stt
}

if [ "$pfs1"  ] ;then
    shift ;d="$1" ; dn="$d" 
    [ "`ls "$dn"/var/lib/dpkg/_status/*stt 2>/dev/null`" ] && echo "ERROR: "$dn"/var/lib/dpkg/_status is not empty" && exit 1
    [ -f "$dn"/var/lib/dpkg/status ] && echo "ERROR: "$dn"/var/lib/dpkg/status present" && exit 1
    F 
else #=dir
    dd="`find "$1" -maxdepth 1 -mindepth 1 -type d |sort`"
    [ "$dd" ] && ddir=1 || dd="`find "$1" -maxdepth 1 -mindepth 1 -type f |grep -E '.pfs$'`"
    dn="$1/"zz-dpkg-"$(basename "`realpath "$1"`" .pfs)"
    [ -d "$dn" ] && echo "ERROR: $dn present in $1" && exit 1
    for i in `echo $dd` ;do
	echo $i
	#d2="$1/`basename "$i" .pfs`"
	#dn="$(basename "`realpath "$i"`" .pfs)"-dpkg
	#if  [ ! "$ddir" ] ;then 
	#    mkdir "$d2" && mount -o ro "$i" "$d2" || { echo "ERROR mount $d2" ; exit 1 ; }
	#fi
	#d2="$i"
	if [ -f "$i/var/lib/dpkg/status" ] ;then
	    #mkdir -p "$dn"/var/lib/dpkg/_status
	    #cp "$d2/var/lib/dpkg/status" "$dn"/var/lib/dpkg/_status/"`basename "$i"`"
	    #cat "$d2/var/lib/dpkg/status"  >>"$dn"/var/lib/dpkg/status1
	    dpkg-trim "$i"
	elif [ "`ls "$i"/var/lib/dpkg/_status/*stt 2>/dev/null`" ] ;then
	    printf " : "`ls "$i"/var/lib/dpkg/_status/*stt`" present\n"
	else d="$i"; dn="$i" ;F 
	fi
	#[ ! "$ddir" ] && umount "$d2" && rmdir "$d2"
    done
fi
