arch-chroot: stop interleaving functions and sequential code
Makes it easier to reason about the code. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
This commit is contained in:
parent
7101c552a0
commit
a6765cc5c4
@ -74,6 +74,24 @@ chroot_add_resolv_conf() {
|
||||
chroot_add_mount "$src" "$dest" --bind
|
||||
}
|
||||
|
||||
arch-chroot() {
|
||||
(( EUID == 0 )) || die 'This script must be run with root privileges'
|
||||
|
||||
[[ -d $chrootdir ]] || die "Can't create chroot on non-directory %s" "$chrootdir"
|
||||
|
||||
$setup "$chrootdir" || die "failed to setup chroot %s" "$chrootdir"
|
||||
chroot_add_resolv_conf "$chrootdir" || die "failed to setup resolv.conf"
|
||||
|
||||
if ! mountpoint -q "$chrootdir"; then
|
||||
warning "$chrootdir is not a mountpoint. This may have undesirable side effects."
|
||||
fi
|
||||
|
||||
chroot_args=()
|
||||
[[ $userspec ]] && chroot_args+=(--userspec "$userspec")
|
||||
|
||||
SHELL=/bin/bash $pid_unshare chroot "${chroot_args[@]}" -- "$chrootdir" "${args[@]}"
|
||||
}
|
||||
|
||||
while getopts ':hNu:' flag; do
|
||||
case $flag in
|
||||
h)
|
||||
@ -101,24 +119,6 @@ shift $(( OPTIND - 1 ))
|
||||
chrootdir=$1
|
||||
shift
|
||||
|
||||
arch-chroot() {
|
||||
(( EUID == 0 )) || die 'This script must be run with root privileges'
|
||||
|
||||
[[ -d $chrootdir ]] || die "Can't create chroot on non-directory %s" "$chrootdir"
|
||||
|
||||
$setup "$chrootdir" || die "failed to setup chroot %s" "$chrootdir"
|
||||
chroot_add_resolv_conf "$chrootdir" || die "failed to setup resolv.conf"
|
||||
|
||||
if ! mountpoint -q "$chrootdir"; then
|
||||
warning "$chrootdir is not a mountpoint. This may have undesirable side effects."
|
||||
fi
|
||||
|
||||
chroot_args=()
|
||||
[[ $userspec ]] && chroot_args+=(--userspec "$userspec")
|
||||
|
||||
SHELL=/bin/bash $pid_unshare chroot "${chroot_args[@]}" -- "$chrootdir" "${args[@]}"
|
||||
}
|
||||
|
||||
args=("$@")
|
||||
if (( unshare )); then
|
||||
$mount_unshare bash -c "$(declare_all); arch-chroot"
|
||||
|
Loading…
Reference in New Issue
Block a user