clean: refactor

this simplifies things to avoid the messy recursion.

it is also a necessary step to implementing handling of common options
like --debug. we need to process all options to decide how to approach
doing things (e.g. with debug messages to be output or not) before actually
performing any work, in order for options like --debug to be reacted to
properly.

also, as things were, options like `--debug` were not being passed along
in the recursive executions, while now that is no longer an issue.

the order of file/folder deletions for `--all`|`--purge`|`--remove`
actions is slightly changed here, but i don't see any issue with that and
it's cleaner to not preserve that.

Gbp-Dch: Short
This commit is contained in:
Lyndon Brown 2020-04-28 19:41:45 +01:00
parent 0afd3625ed
commit fca1283147
1 changed files with 108 additions and 78 deletions

View File

@ -43,108 +43,38 @@ if [ $# -eq 0 ]; then
set -- "--all"
fi
STAGEFILES_DIR="$(Stagefiles_dir)"
for ARGUMENT in "${@}"; do
case "${ARGUMENT}" in
--all)
Echo_debug "Running --all"
"${0}" noauto --chroot
"${0}" noauto --binary
"${0}" noauto --stage
"${0}" noauto --source
rmdir --ignore-fail-on-non-empty auto > /dev/null 2>&1 || true
rmdir --ignore-fail-on-non-empty local/bin > /dev/null 2>&1 || true
rmdir --ignore-fail-on-non-empty local > /dev/null 2>&1 || true
RM_ALL="true"
;;
--cache)
Echo_debug "Cleaning cache"
rm -rf cache
RM_CACHE="true"
;;
--chroot)
# This one is not debug because it can potentially take some time
Echo_message "Cleaning chroot"
umount -f chroot/run > /dev/null 2>&1 || true
umount -f chroot/sys > /dev/null 2>&1 || true
umount -f chroot/proc/sys/fs/binfmt_misc > /dev/null 2>&1 || true
umount -f chroot/proc > /dev/null 2>&1 || true
umount -f chroot/lib/init/rw > /dev/null 2>&1 || true
umount -f chroot/dev/shm > /dev/null 2>&1 || true
umount -f chroot/dev/pts > /dev/null 2>&1 || true
umount -f chroot/dev > /dev/null 2>&1 || true
umount -f chroot/var/lib/dpkg > /dev/null 2>&1 || true
umount -f chroot/root/config > /dev/null 2>&1 || true
umount -f chroot/binary.tmp > /dev/null 2>&1 || true
umount -f chroot/dev.tmp/pts > /dev/null 2>&1 || true
rm -rf chroot chroot.tmp
rm -f chroot.packages.live chroot.packages.install
rm -f chroot.files
rm -f "$(Installed_tmp_packages_file)"
rm -f "${STAGEFILES_DIR}"/chroot*
RM_CHROOT="true"
;;
--binary)
Echo_debug "Cleaning binary"
umount -f binary.tmp > /dev/null 2>&1 || true
rm -rf binary.tmp binary.deb binary.udeb
rm -f ${LB_IMAGE_NAME}*.iso
rm -f ${LB_IMAGE_NAME}*.img
rm -f ${LB_IMAGE_NAME}*.tar.gz
rm -f ${LB_IMAGE_NAME}*.zsync*
rm -f ${LB_IMAGE_NAME}.sh
rm -f ${LB_IMAGE_NAME}*.contents ${LB_IMAGE_NAME}*.packages ${LB_IMAGE_NAME}*.files
rm -f ${LB_IMAGE_NAME}*.iso-ONIE.bin
rm -f MD5SUMS SHA1SUMS SHA256SUMS SHA512SUMS
rm -f md5sum.txt sha1sum.txt sha256sum.txt sha512sum.txt
rm -rf binary
rm -rf tftpboot
rm -f "${STAGEFILES_DIR}"/binary*
RM_BINARY="true"
;;
--remove)
Echo_debug "Running --remove"
"${0}" noauto --all
rm -rf cache/packages.*
RM_REMOVE="true"
;;
--purge)
Echo_debug "Running --purge"
"${0}" noauto --all
"${0}" noauto --cache
if [ -e auto/config ]
then
Remove_stagefile config
fi
RM_PURGE="true"
;;
--stage)
Echo_debug "Cleaning stage files"
rm -rf "${STAGEFILES_DIR}"/*
RM_STAGE="true"
;;
--source)
Echo_debug "Cleaning source"
rm -f ${LB_IMAGE_NAME}-source*.iso
rm -f ${LB_IMAGE_NAME}-source*.img
rm -f ${LB_IMAGE_NAME}-source*.tar
rm -f ${LB_IMAGE_NAME}-source*.tar.gz
rm -f ${LB_IMAGE_NAME}-source*.list
rm -f ${LB_IMAGE_NAME}-source-selection.txt
rm -rf source
rm -f "${STAGEFILES_DIR}"/source*
RM_SOURCE="true"
;;
-h|--help)
@ -166,3 +96,103 @@ for ARGUMENT in "${@}"; do
;;
esac
done
STAGEFILES_DIR="$(Stagefiles_dir)"
if [ "${RM_PURGE}" = "true" ]; then
Echo_debug "Initialising --purge cleaning"
RM_ALL="true"
RM_CACHE="true"
# Clear config stagefile
if [ -e auto/config ]; then
Remove_stagefile config
fi
fi
if [ "${RM_REMOVE}" = "true" ]; then
Echo_debug "Initialising --remove cleaning"
RM_ALL="true"
rm -rf cache/packages.*
fi
if [ "${RM_ALL}" = "true" ]; then
Echo_debug "Initialising --all cleaning"
RM_STAGE="true"
RM_CHROOT="true"
RM_BINARY="true"
RM_SOURCE="true"
rmdir --ignore-fail-on-non-empty auto > /dev/null 2>&1 || true
rmdir --ignore-fail-on-non-empty local/bin > /dev/null 2>&1 || true
rmdir --ignore-fail-on-non-empty local > /dev/null 2>&1 || true
fi
if [ "${RM_STAGE}" = "true" ]; then
Echo_debug "Cleaning stage files"
rm -rf "${STAGEFILES_DIR}"/*
fi
if [ "${RM_CACHE}" = "true" ]; then
Echo_debug "Cleaning cache"
rm -rf cache
fi
if [ "${RM_CHROOT}" = "true" ]; then
# This one is not debug because it can potentially take some time
Echo_message "Cleaning chroot"
umount -f chroot/run > /dev/null 2>&1 || true
umount -f chroot/sys > /dev/null 2>&1 || true
umount -f chroot/proc/sys/fs/binfmt_misc > /dev/null 2>&1 || true
umount -f chroot/proc > /dev/null 2>&1 || true
umount -f chroot/lib/init/rw > /dev/null 2>&1 || true
umount -f chroot/dev/shm > /dev/null 2>&1 || true
umount -f chroot/dev/pts > /dev/null 2>&1 || true
umount -f chroot/dev > /dev/null 2>&1 || true
umount -f chroot/var/lib/dpkg > /dev/null 2>&1 || true
umount -f chroot/root/config > /dev/null 2>&1 || true
umount -f chroot/binary.tmp > /dev/null 2>&1 || true
umount -f chroot/dev.tmp/pts > /dev/null 2>&1 || true
rm -rf chroot chroot.tmp
rm -f chroot.packages.live chroot.packages.install
rm -f chroot.files
rm -f "$(Installed_tmp_packages_file)"
rm -f "${STAGEFILES_DIR}"/chroot*
fi
if [ "${RM_BINARY}" = "true" ]; then
Echo_debug "Cleaning binary"
umount -f binary.tmp > /dev/null 2>&1 || true
rm -rf binary.tmp binary.deb binary.udeb
rm -f ${LB_IMAGE_NAME}*.iso
rm -f ${LB_IMAGE_NAME}*.img
rm -f ${LB_IMAGE_NAME}*.tar.gz
rm -f ${LB_IMAGE_NAME}*.zsync*
rm -f ${LB_IMAGE_NAME}.sh
rm -f ${LB_IMAGE_NAME}*.contents ${LB_IMAGE_NAME}*.packages ${LB_IMAGE_NAME}*.files
rm -f ${LB_IMAGE_NAME}*.iso-ONIE.bin
rm -f MD5SUMS SHA1SUMS SHA256SUMS SHA512SUMS
rm -f md5sum.txt sha1sum.txt sha256sum.txt sha512sum.txt
rm -rf binary
rm -rf tftpboot
rm -f "${STAGEFILES_DIR}"/binary*
fi
if [ "${RM_SOURCE}" = "true" ]; then
Echo_debug "Cleaning source"
rm -f ${LB_IMAGE_NAME}-source*.iso
rm -f ${LB_IMAGE_NAME}-source*.img
rm -f ${LB_IMAGE_NAME}-source*.tar
rm -f ${LB_IMAGE_NAME}-source*.tar.gz
rm -f ${LB_IMAGE_NAME}-source*.list
rm -f ${LB_IMAGE_NAME}-source-selection.txt
rm -rf source
rm -f "${STAGEFILES_DIR}"/source*
fi