#!/bin/sh
#190801 sfs
HLP(){
echo "Сборка модуля.pfs из arch пакетов
    Usage:     `basename $0` [-U][-f][-p][-n][-d][-l][-m] пакет [список пакетов]
    Пример списка пакетов:
    pack1
    #pack2
    pack3

    -U 
	/путь/локальный_пакет [список локальных пакетов]
	Установить локальный пакет(ы) в каталог с его именем, разрешив 
	зависимости из репозитория.
	Актуально для установки пакета не из репозитория или другого среза репозитория

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

    -n 
	пропустить очистку кэш пакетов
`trim --help |egrep -v '^-g'`
    " && exit
}
[ ! "$1" ] && HLP

for arg in "$@" ;do
  case "${arg}" in
    "-n")	t="${t} -n" ;;
    "-d")	t="${t} -d" ;;
    "-l")	t="${t} -l" ;;
    "-m")	t="${t} -m" ;;
    "-h" | "--help")  HLP ;exit 1 ;;
    "-U")	UU=1 ;;
    "-f")	ff=dd ;;
    "-p")	pp=1 ;;
    "-n")	nn=1 ;;
    *) 	r="${r} ${arg}" ;;
  esac
done
name="`echo "$r" |awk '{print $1}'`"
r="`echo "$r"|sed 's/^ //'`"
#echo "pp=$pp $t =$r" name=$name;exit

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

if [ "$pp" ];then
#    dir="$(basename `ls -1 /var/cache/pacman/pkg/  |head -1` -$HOSTTYPE.pkg.tar.xz)"
    dir="$(basename `ls -1 /var/cache/pacman/pkg/  |head -1` .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  \
	&& trim $t $dir 2>/dev/null && MSG
	rmdir $dir/tmp 2>/dev/null
    exit
fi

#[ "$1" = "-d" ] && d=dd && shift
for i in $r ;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 [ ! "$nn" ] ;then
    read -p "Очистить кэш пакетов? [Y/n] " y
    [ "$y" = "n" ] && exit || sudo rm /var/cache/pacman/pkg/*  2>/dev/null #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"
}

p2="`echo $r | awk '{print $1}'`"
if [ "$UU" ];then
    cp $r /var/cache/pacman/pkg || exit 0
    #w="`echo  "$r" |wc -w`"
#    p="`pacman -U $@ --print-format  "%n"  |head -n-$w`"
    p1="`pacman -U $r --print-format  "%n" |tail -n+2`"
    dir="`pacman -Udd $p2 --print-format  "%n-%v" |tail -n+2`"
#    pno="`pacman -Udd $p2 --print-format  "%n" |tail -n+2`"
#    pno="`pacman -Udd $r --print-format  "%n" |tail -n+2`"
#    pno="$(echo `pacman -Udd $r --print-format  "%n" |tail -n+2`)"
    pno="$(echo `pacman -Udd $r --print-format  "%n" |tail -n+2 |sed 's/^/\^/'` |sed 's/ /|/g')"
#    p1="`echo "$p1" |egrep -v '^'$pno''`"
    p1="`echo "$p1" |egrep -v ''$pno''`"
    
    #p1="$(pacman -U $p2 --print-format  "%n" |tail -n+2)"
    #dir="$(basename "`ls /var/cache/pacman/pkg/ |egrep '^'$p2''`" -$HOSTTYPE.pkg.tar.xz)" 
    #dir="$(basename "$pno" -$HOSTTYPE.pkg.tar.xz)" 
    ##dir="$pno" 
    # |head -n-$w`"
    
#    p1="`pacman -U $r --print-format  "%n"  |head -n-$w`"
#    dir="`basename $1 ".pkg.tar.xz"`"
    #echo "$p"  |grep -v "..." ;exit
fi
#echo =$p1=-$dir-;exit

#P(){
#[ "$w" ] && shift && shift 
#pacman -Sw $r && DIR && mkdir -p $dir/var/lib/pacman/local \
#pacman -Sw$ff $p1 --noconfirm \
D(){
#pacman-a -Sw$ff $p1  
pacman -Sw$ff $p1  
    [ "$dir" ] || dir="`pacman -Sdd --print-format "%n-%v" $name 2>/dev/null`"
#    && dir2="$(basename "`ls /var/cache/pacman/pkg/ |egrep '^'$p2''`" -$HOSTTYPE.pkg.tar.xz)" \
#    && dir2="$(basename "$dir2" -any.pkg.tar.xz)"
}
D
XX(){
if [ "$dir2" ];then
    dir="$dir2"
else 
    dir="`echo $r |awk '{print $1}'`"
fi
}
    [ -f "$dir" ] && dir="$dir"-`date +%m%d%H%M%S`
    [ -d "$dir" ] && dir="$dir"-`date +%m%d%H%M%S`
    mkdir -p $dir/var/lib/pacman/local \
    && pacman -Uddr $dir /var/cache/pacman/pkg/*.pkg.tar.xz --noconfirm  \
    && trim $t $dir  2>/dev/null && MSG
	rmdir $dir/tmp 2>/dev/null
