#!/bin/sh
#180128 sfs
HLP(){
echo "Сборка модуля.pfs из arch пакетов
    Usage: 
    `basename $0` -U /путь/локальный_пакет [список локальных пакетов]
	Установить локальный пакет(ы) в каталог с его именем, разрешив 
	зависимости из репозитория.
	Актуально для установки пакета не из репозитория или другого среза репозитория

    `basename $0` -d
	Установить только перечисленные пакеты (без разрешения зависимостей)
	Подобие pacman -Swdd
	
    `basename $0` -p 
	Установить все пакеты уже находящиеся в /var/cache/pacman/pkg/ в
	каталог с именем первого по алфавиту пакета

    `basename $0` [-n] пакет [список пакетов]
	-n - пропустить очистку кэш пакетов

    Пример списка пакетов:
    pack1
    #pack2
    pack3
    " && exit
}
[ ! "$1" ] && HLP
[ "$1" = "--help" ] && HLP

MSG(){
echo "
================================================
Пакеты установлены в директорию $dir. 
Откорректируйте /usr/share/application/*.desktop
Сделайте: mkpfs $dir"
}

if [ "$1" = "-p" ];then
    dir="$(basename `ls -1 /var/cache/pacman/pkg/  |head -1` -$HOSTTYPE.pkg.tar.xz)"
    [ ! "$dir" ] && echo "В /var/cache/pacman/pkg/ нет пакетов" && exit 1
    mkdir -p $dir/var/lib/pacman/local \
	&& pacman -Uddr $dir /var/cache/pacman/pkg/*.pkg.tar.xz --noconfirm --force \
	&& trim $dir && MSG
	rmdir $dir/tmp 2>/dev/null
    exit
fi

[ "$1" = "-n" ] && n=1  && shift
[ "$1" = "-d" ] && d=dd && shift
for i in $@ ;do
    if [ -f $i ] ;then
	    p1="`egrep -v '^#' $i`" && p="$p `echo $p1`"
	else
	    p="$p $i"
    fi
done
p1="`echo $p`"
#echo =$p1=;exit

if [ ! -f /var/lib/pacman/sync/core.db ] ;then
	read -p "База пакетов пуста. Синхронизировать? [Y/n] " y
	[ "$y" = "n" ] && exit || sudo pacman -Syy
fi

if [ ! "$n" ] ;then
    read -p "Очистить кэш пакетов? [Y/n] " y
    [ "$y" = "n" ] && exit || sudo rm /var/cache/pacman/pkg/* #pacman -Sc --noconfirm
fi

XXDIR() {
[ "$dir" ] && return
dir="$(basename "`echo $p1 |awk '{print $1}'`")"
dir="$(basename `ls -1 /var/cache/pacman/pkg/ |grep "$dir" |head -1` -$HOSTTYPE.pkg.tar.xz)"
#echo $dir $p1;exit
#[ "$dir" ] || dir="$p1"
}
if [ "$1" = "-U" ];then
    shift
    cp $@ /var/cache/pacman/pkg || exit 0
    w="`echo  "$@" |wc -w`"
#    p="`pacman -U $@ --print-format  "%n"  |head -n-$w`"
    p1="`pacman -U $@ --print-format  "%n"  |tail -n+2 |head -n-$w`"
#    p1="`pacman -U $@ --print-format  "%n"  |head -n-$w`"
#    dir="`basename $1 ".pkg.tar.xz"`"
    #echo "$p"  |grep -v "..." ;exit
fi
dir="`basename $1 .pkg.tar.xz`"
[ -f "$dir" ] && dir="$dir"-01
#echo =$p1=-$dir-;exit

#P(){
#[ "$w" ] && shift && shift 
#pacman -Sw $@ && DIR && mkdir -p $dir/var/lib/pacman/local \
pacman -Sw$d $p1 && mkdir -p $dir/var/lib/pacman/local \
    && pacman -Uddr $dir /var/cache/pacman/pkg/*.pkg.tar.xz --noconfirm --force \
    && trim $dir && MSG
	rmdir $dir/tmp 2>/dev/null
#}
#P `echo $p1`
#Сделайте: trim $dir && mkpfs $dir"
exit
mksquashfs /mnt/sda1/gimp /mnt/sda1/gimp.xzm -comp xz -b 524288 -Xbcj x86
