#!/bin/bash

ORIGDIR="${PWD}"

prepare_generate() {
	if [ ${UID} -ne 0 ] ; then
		echo "Error, run again as root." 1>&2
		return 1
	fi
	if [ ! -f "$ORIGDIR/generate.sh" ] ; then
		echo "Error, not in rootfs generate directory."
		return 2
	fi

	if [ ! -f "$ORIGDIR/ubuntu18.04-20260424.tar.xz" ] ; then
		echo "Error, rootfs tarball not found."
		return 3
	fi

	cd "${ORIGDIR}" || return 4
	if [ -e "rootfs" ] ; then
		echo "Error, please delete rootfs directory before retry."
		return 5
	fi
	mkdir -p ./rootfs && tar -Jxf ./ubuntu18.04-20260424.tar.xz -C ./rootfs
	return $?
}

install_files() {
	cd "${ORIGDIR}" || return 1
	mkdir -p ./rootfs/usr/lib/systemd/system
	cp -r -f -P --preserve=mode -v ./addon/* ./rootfs/

	cd ./rootfs || return 2
	chown root:root ./etc/passwd ./etc/shadow \
		./root/.ssh/authorized_keys ./etc/ssh/sshd_config
	chmod 644 ./etc/passwd
	chmod 600 ./etc/shadow ./root/.ssh/authorized_keys ./etc/ssh/sshd_config

	# copy ELF files to root
	cp -v --preserve=mode -f ../resource/*.elf ./root/
	return 0
}

pack_rootfs() {
	cd "${ORIGDIR}/rootfs" || return 1
	rm -v -rf ../rootfs.tar*
	echo "Compressing rootfs for x86_64 docker..."
	tar -cf ../rootfs.tar * && cd "${ORIGDIR}" && \
		xz -z -T 4 -v -6 rootfs.tar
	return $?
}

prepare_generate || exit 1
install_files || exit 2
pack_rootfs
exit $?
