#!/bin/sh

if [ $# -lt 2 ]; then
    dialog --msgbox "Ошибка!\n\nНедостаточно аргументов!" 8 40
    exit
fi

TITLE="Создание загрузочной флешки"
dev=$1
kver=$2
arch=$3
src=/opt
dstboot=/mnt/boot
dstefi=$dstboot/EFI/BOOT
dst=/mnt/$arch

blk=/dev/$dev
partboot="$blk"1
part="$blk"2

[ -d $dstboot ] || mkdir $dstboot
[ -d $dst ] || mkdir $dst

exec 3>&1
errstr=
(
    echo "Создание таблицы разделов..."
    errstr=$errstr`parted -a optimal -s $blk mklabel gpt 2>&1`
    echo "Создание разделов..."
    sleep 2
    errstr=$errstr`parted -a optimal -s $blk mkpart BOOT fat32 0% 64MiB mkpart REECOM ext4 64MiB 100% set 1 boot on 2>&1`
    echo "Форматирование разделов..."
    sleep 2
    mkfs.vfat -F 32 -n "BOOT" $partboot  2>/dev/null > /dev/null
    mkfs.f2fs -l "REECOM" $part 2>/dev/null > /dev/null
    echo "Монтирование разделов..."
    errstr=$errstr`mount $partboot $dstboot`
    sleep 1
    errstr=$errstr`mount $part $dst`
    sleep 1
) | dialog --backtitle "$TITLE" --title "Создание загрузочного раздела" --progressbox " " 10 60
if [ "$errstr" ]; then
    dialog --backtitle "$TITLE" --title "Возникли ошибки, продолжить?" --yesno "$errstr" 20 50 2>&1 1>&3
    if [ $? -ne 0 ]; then
	exit
    fi
fi

(pv -n $src/core-$arch.tar.xz | tar xJf - -C /mnt/$arch ) 2>&1 | dialog --backtitle "$TITLE" --title "Распаковка файлов ОС $arch" --gauge " " 10 70 0
sleep 1
(pv -n $src/kernel-$kver-$arch.tar.xz | tar xJhf - -C /mnt/$arch ) 2>&1 | dialog --backtitle "$TITLE" --title "Распаковка файлов ядра $arch" --gauge " " 10 70 0
sleep 1
mv /mnt/$arch/boot/bzImage $dstboot/kernel-$arch
cp $src/initrd-$arch.gz $dstboot/
sleep 1
echo -e "[Match]\nName=en*\n\n[Network]\nDHCP=yes" > /mnt/$arch/etc/systemd/network/50-dhcp.network

(
    echo "Распаковка..."
    tar xJf $src/efi.tar.xz -C $dstboot
    echo "Запись UUID..."
    PARTUUID=`blkid $part -s PARTUUID -o value`
    sed -i "s/REPLACE_PARTUUID32/$PARTUUID/g" $dstefi/refind.conf
    sed -i "s/REPLACE_PARTUUID64/$PARTUUID/g" $dstefi/refind.conf
    sleep 1
    echo "Размонтирование разделов..."
    umount $partboot $dst
    sleep 1
) | dialog --backtitle "$TITLE" --title "Установка загрузчика" --progressbox " " 10 60

exec 3>&-
