#!/bin/bash

# dev rootfs
sysroot_partition (){
truncate -s ${IMGSIZE} "${ROOTFS_FOLDER}${RELEASE_NAME}"
parted --script "${ROOTFS_FOLDER}${RELEASE_NAME}" \
mklabel msdos \
mkpart primary ext2 1MiB 100%
IMAGE_LOOP_DEV="$(losetup --show -P -f ${ROOTFS_FOLDER}${RELEASE_NAME})"
IMAGE_LOOP_DEV_ROOTFS="${IMAGE_LOOP_DEV}p1"
partprobe "${IMAGE_LOOP_DEV}"
mkfs.ext4 -L ROOTFS "${IMAGE_LOOP_DEV_ROOTFS}"
mkdir -p ${ROOT}
mount "${IMAGE_LOOP_DEV_ROOTFS}" ${ROOT}
sync
umount ${ROOT}
mount -o defaults,noatime "${IMAGE_LOOP_DEV_ROOTFS}" ${ROOT}
}

sysroot_setup (){
mkdir -p ${ROOT}/etc/apt/apt.conf.d ${ROOT}/etc/dpkg/dpkg.cfg.d
echo "force-unsafe-io" > "${ROOT}/etc/dpkg/dpkg.cfg.d/dpkg-unsafe-io"
if [ $VERBOSE -eq 1 ]; then choose_release; else choose_release > /dev/null 2>&1; fi
}

devuan_keyring (){
URL="https://pkgmaster.devuan.org/devuan/pool/main/d/devuan-keyring/"
FILE="devuan-keyring_2023.10.07_all.deb"
if [[ `dpkg -l | grep "devuan-keyring"` ]]; then
	if [[ `dpkg -l | grep "devuan-keyring" | tr -d -c 0-9` == "20231007" ]]; then
		:;
	else
		apt purge -y devuan-keyring
		wget -cq --show-progress ${URL}${FILE}; dpkg -i ${FILE}; rm -f ${FILE}
	fi
else
	wget -cq --show-progress ${URL}${FILE}; dpkg -i ${FILE}; rm -f ${FILE}
fi
}

kali_keyring (){
URL="http://http.kali.org/pool/main/k/kali-archive-keyring/"
FILE="kali-archive-keyring_2024.1_all.deb"
if [[ `dpkg -l | grep "kali-archive-keyring"` ]]; then
	if [[ `dpkg -l | grep "kali-archive-keyring" | tr -d -c 0-9` == "20241" ]]; then
		:;
	else
		apt purge -y kali-archive-keyring
		wget -cq --show-progress ${URL}${FILE}; dpkg -i ${FILE}; rm -f ${FILE}
	fi
else
	wget -cq --show-progress ${URL}${FILE}; dpkg -i ${FILE}; rm -f ${FILE}
fi
}

raspbian_keyring (){
if [[ -f "/usr/share/keyrings/raspbian-archive-keyring.gpg" ]]; then
	:;
else
	curl -sS http://archive.raspbian.org/raspbian.public.key | gpg --dearmor | tee /usr/share/keyrings/raspbian-archive-keyring.gpg > /dev/null 2>&1
fi
}

ubuntu_keyring (){
URL="https://github.com/pyavitz/debian-image-builder/releases/download/dpkg/"
FILE1="ubuntu-keyring_2023.11.28.1-0.2_all.deb"
FILE2="ubuntu-archive-keyring_2023.11.28.1-0.2_all.deb"
if [[ `dpkg -l | grep "ubuntu-keyring"` ]]; then
	if [[ `dpkg -l | grep "ubuntu-keyring" | tr -d -c 0-9` == "20231128102" ]]; then
		:;
	else
		apt purge -y ubuntu-keyring 
		if [[ `dpkg -l | grep "ubuntu-archive-keyring"` ]]; then apt purge -y ubuntu-archive-keyring; fi
		if [[ `dpkg -l | grep "ubuntu-dbgsym-keyring"` ]]; then apt purge -y ubuntu-dbgsym-keyring; fi
		if [[ `dpkg -l | grep "ubuntu-cloud-keyring"` ]]; then apt purge -y ubuntu-cloud-keyring; fi
		wget -cq --show-progress ${URL}${FILE1}; wget -cq --show-progress ${URL}${FILE2}
		dpkg -i *.deb; rm -f *.deb
	fi
else
	wget -cq --show-progress ${URL}${FILE1}; wget -cq --show-progress ${URL}${FILE2}
	dpkg -i *.deb; rm -f *.deb
fi
}

debootstrap_script (){
DEBOOTSTRAP_DIR="/usr/share/debootstrap/scripts"
if [[ -f "${DEBOOTSTRAP_DIR}/${DISTRO_VERSION}" ]]; then
	:;
else
	ln -sr ${DEBOOTSTRAP_DIR}/${DEBOOTSTRAP_SCRIPT} ${DEBOOTSTRAP_DIR}/${DISTRO_VERSION}
	sleep .50
fi
}

run_debootstrap (){
KEY="/usr/share/keyrings/${DISTRO}-archive-keyring.gpg"
if [[ "$DISTRO" =~ ^(debian|devuan)$ ]]; then DEBOOTSTRAP_SCRIPT="sid"; debootstrap_script; fi
if [[ "$DISTRO" == "ubuntu" ]]; then DEBOOTSTRAP_SCRIPT="gutsy"; debootstrap_script; fi
if [[ "$MMDEBSTRAP" == "true" ]]; then
	mkdir -p ${ROOT}/etc/apt
	if [ $VERBOSE -eq 1 ]; then choose_release; else choose_release > /dev/null 2>&1; fi
	mmdebstrap --skip=check/empty --arch=${ARCH_EXT} --keyring=${KEY} ${DISTRO_VERSION} ${ROOT}
else
	debootstrap --arch ${ARCH_EXT} --foreign --force-check-gpg --keyring=${KEY} ${DISTRO_VERSION} ${ROOT} ${MIRROR}
	chroot ${ROOT} /debootstrap/debootstrap --second-stage
fi
}
