#!/bin/sh
#rebuild loaded or installed pfs
#VERSION 3.6
. $(which pfs)

if [ ! "$1" ]; then
  echo "Usage: $(basename "$0") <PACKAGE> <args for mkpfs> " >&2; exit 1
fi

package_name=$(basename $1 |sed "s/\.${EXT}$//")
shift

fileslist="${PFSDIR}/install/$package_name/pfs.files"
[ -f $fileslist ] || fileslist="${PFSDIR}/mount/$package_name/pfs.files"
dirsempty=$(echo $fileslist | sed 's/pfs.files/pfs.dirs.empty/')

# find pfs files in pfs contaners
if ! [ -f $fileslist ] ;then
	package_list=$(ls ${prefixmp}${package_name}.${EXT}${PFSDIR}/mount/)
	echo "$package_list"
	if [[ -n $package_list ]] ; then
		pfs_in_contaner=''
		for pack in $package_list ; do
			pfsrebuild  $pack --nopfs
			pfs_in_contaner="$pfs_in_contaner ./$pack"
		done
		mkpfs $pfs_in_contaner -o ${package_name}.$EXT $@
		exitmsg "can't create contaner" $?
	else
		exitmsg "can't find packages" 4
	fi
exit
fi

if [[ -f ${fileslist} ]]; then 
  buildir="./build_${package_name}/${package_name}"
  mkdir -p "$buildir"
  tar -c -p --ignore-failed-read --no-recursion -T $fileslist  2>/dev/null | tar -x -p -C ${buildir}
  if [[ -f  ${dirsempty} ]] ; then
	cat $dirsempty | sed -e 's:^[^/]*::' -e 's:[\]:\\\\:g' | while read emptydir ; do
	#it is a hack to save owner and permissions for empty dirs
	cp -a --parents $emptydir/not_existing_filename ${buildir}/ 2>/dev/null
	done
  fi
  # --nopfs parametr - make build dir and exit 
  if echo "$@" | grep -q "\-\-nopfs" ; then 
	rm -rf ./${package_name} && mv -f ${buildir} ./
  else
	mkpfs  ${buildir} -o ${package_name}.$EXT $@
	exitmsg "can't create module" $?
  fi
  rm -rf ./build_${package_name}
  else
  echo "Package \"$package_name\" is not installed!" >&2; #exit 1
fi

exit 0
