]> git.ipfire.org Git - thirdparty/dracut-ng.git/commitdiff
chore(dracut): introduce list_hooks()
authorVitaly Kuznetsov <vkuznets@redhat.com>
Fri, 26 Sep 2025 15:09:50 +0000 (17:09 +0200)
committerNeal Gompa (ニール・ゴンパ) <ngompa13@gmail.com>
Wed, 4 Feb 2026 16:55:21 +0000 (11:55 -0500)
In preparation to supporting additional hooks locations, introduce a
function to list matching hooks.

No functional change intended.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
modules.d/45net-lib/netroot.sh
modules.d/77dracut-systemd/dracut-mount.sh
modules.d/77initqueue/dracut-initqueue.sh
modules.d/80base/dracut-lib.sh
modules.d/80base/init.sh
modules.d/86shutdown/shutdown.sh

index 8f9777434dc724efc35936422e5d51a9f84b8436..1503d8c7fe29a385c7401bee029ec959b4c34223 100755 (executable)
@@ -58,9 +58,9 @@ if [ -z "$2" ]; then
 
         # FIXME!
         unset rootok
-        for f in "$hookdir"/cmdline/90*.sh; do
+        for f in $(list_hooks "cmdline" "90*.sh"); do
             # shellcheck disable=SC1090
-            [ -f "$f" ] && . "$f"
+            . "$f"
         done
     else
         rootok="1"
index 18ba3dcda42f9da9441195cd9de84665e55f936a..9caa40be3e258de52a35a7fe90a0082545c27200 100755 (executable)
@@ -18,9 +18,9 @@ while :; do
         usable_root "$NEWROOT" && break
         umount "$NEWROOT"
     fi
-    for f in "$hookdir"/mount/*.sh; do
+    for f in $(list_hooks "mount"); do
         # shellcheck disable=SC1090
-        [ -f "$f" ] && . "$f"
+        . "$f"
         if ismounted "$NEWROOT"; then
             usable_root "$NEWROOT" && break
             warn "$NEWROOT has no proper rootfs layout, ignoring and removing offending mount hook"
index 5e079193840063a91e1e4f96bc62eb623aa5bdbf..fc93b78fbf787778041547e5f972cf6e38d97f09 100755 (executable)
@@ -31,8 +31,7 @@ while :; do
         rm -f -- "$hookdir/initqueue/work"
     fi
 
-    for job in "$hookdir"/initqueue/*.sh; do
-        [ -e "$job" ] || break
+    for job in $(list_hooks "initqueue"); do
         # shellcheck disable=SC2097 disable=SC1090 disable=SC2098
         job=$job . "$job"
         check_finished && break 2
@@ -40,8 +39,7 @@ while :; do
 
     udevadm settle --timeout=0 > /dev/null 2>&1 || continue
 
-    for job in "$hookdir"/initqueue/settled/*.sh; do
-        [ -e "$job" ] || break
+    for job in $(list_hooks "initqueue/settled"); do
         # shellcheck disable=SC2097 disable=SC1090 disable=SC2098
         job=$job . "$job"
         check_finished && break 2
@@ -58,13 +56,12 @@ while :; do
 
     if [ $main_loop -gt $((2 * RDRETRY / 3)) ]; then
         warn "dracut-initqueue: timeout, still waiting for following initqueue hooks:"
-        for _f in "$hookdir"/initqueue/finished/*.sh; do
+        for _f in $(list_hooks "initqueue/finished"); do
             warn "$_f: \"$(cat "$_f")\""
         done
         if [ "$(ls -A "$hookdir"/initqueue/finished)" ]; then
             warn "dracut-initqueue: starting timeout scripts"
-            for job in "$hookdir"/initqueue/timeout/*.sh; do
-                [ -e "$job" ] || break
+            for job in $(list_hooks "initqueue/timeout"); do
                 # shellcheck disable=SC2097 disable=SC1090 disable=SC2098
                 job=$job . "$job"
                 udevadm settle --timeout=0 > /dev/null 2>&1 || main_loop=0
index 69936d2f27e0927d3a8177f2c3a71863f1c28528..851090a48313d4332caed8501f65acc9bd1029d4 100755 (executable)
@@ -364,35 +364,34 @@ setdebug() {
 
 setdebug
 
-source_all() {
-    local f
-    local _dir
-    _dir=$1
-    shift
-    [ "$_dir" ] && [ -d "/$_dir" ] || return
-    for f in "/$_dir"/*.sh; do
-        if [ -e "$f" ]; then
-            # shellcheck disable=SC1090
-            # shellcheck disable=SC2240
-            . "$f" "$@"
-        fi
-    done
-}
-
 hookdir=/var/lib/dracut/hooks
 export hookdir
 
+list_hooks() {
+    local dir="$1"
+    local pattern="$2"
+    [ -z "$pattern" ] && pattern="*.sh"
+    local hook
+
+    for hook in "$hookdir/$dir/"$pattern; do
+           [ -f "$hook" ] && echo "$hook"
+    done
+}
+
 source_hook() {
     local _dir
     _dir=$1
     shift
-    source_all "/var/lib/dracut/hooks/$_dir" "$@"
+    for f in $(list_hooks "$_dir"); do
+        # shellcheck disable=SC1090
+        # shellcheck disable=SC2240
+        . "$f" "$@"
+    done
 }
 
 check_finished() {
     local f rc=0
-    for f in "$hookdir"/initqueue/finished/*.sh; do
-        [ "$f" = "$hookdir/initqueue/finished/*.sh" ] && return 0
+    for f in $(list_hooks "initqueue/finished"); do
         # shellcheck disable=SC1090
         if [ -e "$f" ] && (. "$f"); then
             rm -f "$f"
index fcbd4bbed307b755b62d74337de2c2d96bd72e70..26b554ab507c094bba77000d90eda1e552569698 100755 (executable)
@@ -186,8 +186,7 @@ while :; do
         rm -f -- "$hookdir"/initqueue/work
     fi
 
-    for job in "$hookdir"/initqueue/*.sh; do
-        [ -e "$job" ] || break
+    for job in $(list_hooks "initqueue"); do
         # shellcheck disable=SC2097 disable=SC1090 disable=SC2098
         job=$job . "$job"
         check_finished && break 2
@@ -195,8 +194,7 @@ while :; do
 
     $UDEV_QUEUE_EMPTY > /dev/null 2>&1 || continue
 
-    for job in "$hookdir"/initqueue/settled/*.sh; do
-        [ -e "$job" ] || break
+    for job in $(list_hooks "initqueue/settled"); do
         # shellcheck disable=SC2097 disable=SC1090 disable=SC2098
         job=$job . "$job"
         check_finished && break 2
@@ -208,8 +206,7 @@ while :; do
     sleep 0.5
 
     if [ $main_loop -gt $((2 * RDRETRY / 3)) ]; then
-        for job in "$hookdir"/initqueue/timeout/*.sh; do
-            [ -e "$job" ] || break
+        for job in $(list_hooks "initqueue/timeout"); do
             # shellcheck disable=SC2097 disable=SC1090 disable=SC2098
             job=$job . "$job"
             udevadm settle --timeout=0 > /dev/null 2>&1 || main_loop=0
@@ -244,9 +241,9 @@ while :; do
         usable_root "$NEWROOT" && break
         umount "$NEWROOT"
     fi
-    for f in "$hookdir"/mount/*.sh; do
+    for f in $(list_hooks "mount"); do
         # shellcheck disable=SC1090
-        [ -f "$f" ] && . "$f"
+        . "$f"
         if ismounted "$NEWROOT"; then
             usable_root "$NEWROOT" && break
             warn "$NEWROOT has no proper rootfs layout, ignoring and removing offending mount hook"
index 381e579d35d3b00f15f13c2c50db76232a9f872f..15f12b588211d3e2bb21b1ecbbab64da23b46209 100755 (executable)
@@ -130,8 +130,7 @@ fi
 _check_shutdown() {
     local __f
     local __s=0
-    for __f in "$hookdir"/shutdown/*.sh; do
-        [ -e "$__f" ] || continue
+    for __f in $(list_hooks "shutdown"); do
         # shellcheck disable=SC1090 disable=SC2240
         if (final="$1" . "$__f" "$1"); then
             rm -f -- "$__f"