#!/bin/sh
#230810 sfs
[ ! "$1" ] || [ "$1" = "--help" ] && echo "Создание модуля.pfs из пакетов Arch или Debian на запущенном фругал дистрибутиве.
Из уже загруженных модулей.pfs собирается новый корень (chroot2pfs) и поверх него создается модуль.
Список использованных модулей выводится в начале
    Usage: 	$0 пакет1 пакет2 ...
    Usage: 	$0 [-m m1,m2] пакет1 пакет2 ... - где mx - части названий дополнительно подключаемых при сборке модулей
		$0 \`cat список_пакетов\`
Точное название пакета искать :
ubuntu : apt update && apt search имя_пакета или здесь
arch : pacman -Sys имя_пакета
Далее: 
mkdp каталог_с_пакетами
mkpfs каталог_с_пакетами" && exit 1

while getopts ":m:p:" o; do
    case "${o}" in
        m)
            m=${OPTARG}
#            ((s == 45 || s == 90)) || usage
            ;;
#        p)
#            p=${OPTARG}
#            ;;
#        *)
#            echo usage
#            ;;
    esac
done
shift $((OPTIND-1))

#echo 1,2,455 | sed 's/^/|/; s/$/\\/; s/,/\\|/g'
[ "$m" ] && m="$(echo "$m" | sed 's/^/|/; s/$/\\/; s/,/\\|/g')"
#echo "$m : $@" ;exit

    if which apt >/dev/null 2>&1 ;then
echo "\
#!/bin/sh 
#-vx
dpkg-fix
[ -f /var/cache/apt/pkgcache.bin ] && read  -p \"apt update? y\N? \" q || q=y
[ \"\$q\" = y ] && { apt update || { echo "!!!: apt update problem - run bash" ; bash ; } ; }
apt install -o DPkg::options::="--force-overwrite" $@ || { echo "!!!: apt install problem - run bash" ; bash ; }
set +vx
echo "---------------------------------------" ; echo
read  -p \"End (or run bash)? y\n? \" q
[ \"\$q\" = n ] && bash
" >tmp.sh
    elif which pacman >/dev/null 2>&1 ;then
echo "\
#!/bin/sh 
#-vx
[ -f /var/lib/pacman/sync/core.db ] && read  -p \"pacman update? y\n? \" q || q=y
[ \"\$q\" = y ] && { pacman -Sy || { echo "!!!: pacman update problem - run bash" ; bash ; } ; }
pacman -S $@ --overwrite "*" || { echo "!!!: pacman install problem - run bash" ; bash ; }
set +vx
echo "---------------------------------------" ; echo
read  -p \"End (or run bash)? y\n? \" q
[ \"\$q\" = n ] && bash
" >tmp.sh
    else
echo "ERROR : no apt or pacman" && exit 1
    fi
#chroot2pfs -o 090-save.pfs --mlist $1 --script tmp.sh && rm tmp.sh
#chroot2pfs -o $1 -m "^\(001\|apt\|020\|089-upd\)-.*" --mlist --script tmp.sh  ;rm tmp.sh
#chroot2pfs -m "^\(001\|020\|089-upd\)-.*" -o $1 --mlist --script tmp.sh && rm tmp.sh


#chroot2pfs -o $1 -m "^\(001\|apt\|020-mesa\|030-qt5\|pkg\|075-systemd\|089-upd\)-.*"   --script tmp.sh  
#chroot2pfs -o $1 -m "^\(001\|apt\|xorg-\|mesa-\|030-qt5\|035-gtk2\|030-qt4\|pkg\|075-systemd\|089-upd\)-.*"   --script tmp.sh  
#echo "m=$m"
chroot2pfs -o $1 -m "^\(001\|apt\|xorg-\|mesa-\|030-qt5\|035-gtk2\|030-qt4\|pkg\|075-systemd\|089-upd\\${m})-.*"   --script tmp.sh  
echo "ex $?"
rm tmp.sh
exit
trim $1
mkpfs $1 --mksqfs "-b 512K -comp zstd -Xcompression-level 18"
#chroot2pfs  --mlist $1 --script tmp.sh  
#--command bash

#chroot2pfs -m "^\(001\|apt\|020\|089-upd\)-.*" --mlist  --command bash
#chroot2pfs -m "^\(001\|apt\|020\|089-upd\|DEVX\)-.*" --mlist a --command bash
#chroot2pfs -m "^\(001\|apt\|020\|089-upd\)-.*" --mlist a,/mnt/home/lfu22/lfds2104/optional/devx-u22-sf01.pfs --command bash