ISO/archiso/initcpio/hooks/archiso_loop_mnt
David Runge e2032db4e7
Adding linting for initcpio scripts
archiso/initcpio/install/*:
Setting bash shebang for all scripts and making them comform with shellcheck.

archiso/initcpio/{hooks,script}/*:
Setting ash shebang for all scripts and making them comform with shellcheck (for dash, as shellcheck has no ash specific
ruleset). Essentially the ash based scripts should be POSIX compliant as much as possible to have an easier time
writing, debugging and maintaining them.
Ensuring that variables are not treated as options and introducing variable quoting.

.gitlab-ci.yml:
Integrating shellcheck for initcpio scripts.

Closes #32
2020-07-11 20:58:01 +02:00

41 lines
1.3 KiB
Bash

#!/bin/ash
run_hook () {
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
[ -n "${img_label}" ] && img_dev="/dev/disk/by-label/${img_label}"
[ -z "${img_flags}" ] && img_flags="defaults"
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
if [ -n "${img_dev}" ] && [ -n "${img_loop}" ]; then
export mount_handler="archiso_loop_mount_handler"
fi
}
archiso_loop_mount_handler () {
newroot="${1}"
local _dev_loop
msg ":: Setup a loop device from ${img_loop} located at device ${img_dev}"
_mnt_dev "${img_dev}" "/run/archiso/img_dev" "-r" "${img_flags}"
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
if [ "${copytoram}" != "y" ]; then
readlink -f "${img_dev}" >> /run/archiso/used_block_devices
fi
if _dev_loop=$(losetup --find --show --read-only "/run/archiso/img_dev/${img_loop}"); then
export archisodevice="${_dev_loop}"
else
echo "ERROR: Setting loopback device for file '/run/archiso/img_dev/${img_loop}'"
launch_interactive_shell
fi
archiso_mount_handler "${newroot}"
if [ "${copytoram}" = "y" ]; then
losetup -d "${_dev_loop}" 2>/dev/null
umount /run/archiso/img_dev
fi
}
# vim: set ft=sh: