with the following follow-up as additional safe-guard:

diff --git a/bin/pve-efiboot-tool b/bin/pve-efiboot-tool
index d9bb829..97015f3 100755
--- a/bin/pve-efiboot-tool
+++ b/bin/pve-efiboot-tool
@@ -195,9 +195,16 @@ clean() {
 }
 
 refresh() {
-       hookscripts="$1"
-       if [ -z "$hookscripts" ]; then
-               hookscripts='pve-auto-removal zz-pve-efiboot'
+       hook=$1
+       hookscripts='pve-auto-removal zz-pve-efiboot'
+
+       if [ -n "$hook" ]; then
+           if echo "$hookscripts" | grep -sqE 
"(^|[[:space:]]+)$hook([[:space:]]+|$)"; then
+               hookscripts="$hook"
+           else
+               warn "E: '$hook' is not a valid hook script name.";
+               exit 1;
+           fi
        fi
 
        for script in $hookscripts; do

On August 1, 2019 1:01 pm, Stefan Reiter wrote:
> Mostly to avoid calling hooks directly in other scripts, future-proofing.
> 
> Signed-off-by: Stefan Reiter <s.rei...@proxmox.com>
> ---
>  bin/pve-efiboot-tool | 30 +++++++++++++++++++++++-------
>  1 file changed, 23 insertions(+), 7 deletions(-)
> 
> diff --git a/bin/pve-efiboot-tool b/bin/pve-efiboot-tool
> index a2ff4e1..d9bb829 100755
> --- a/bin/pve-efiboot-tool
> +++ b/bin/pve-efiboot-tool
> @@ -195,10 +195,19 @@ clean() {
>  }
>  
>  refresh() {
> -     hookscripts='pve-auto-removal zz-pve-efiboot'
> +     hookscripts="$1"
> +     if [ -z "$hookscripts" ]; then
> +             hookscripts='pve-auto-removal zz-pve-efiboot'
> +     fi
> +
>       for script in $hookscripts; do
> -             echo "Running hook script '$script'.."
> -             "/etc/kernel/postinst.d/$script"
> +             scriptpath="/etc/kernel/postinst.d/$script"
> +             if [ -f "$scriptpath" ] && [ -x "$scriptpath" ]; then
> +                     echo "Running hook script '$script'.."
> +                     $scriptpath
> +             else
> +                     warn "Hook script '$script' not found or not 
> executable, skipping."
> +             fi
>       done
>  }
>  
> @@ -261,7 +270,7 @@ usage() {
>       warn "       $0 format <partition> [--force]"
>       warn "       $0 init <partition>"
>       warn "       $0 clean [--dry-run]"
> -     warn "       $0 refresh"
> +     warn "       $0 refresh [--hook <name>]"
>       warn "       $0 kernel <add|remove> <kernel-version>"
>       warn "       $0 kernel list"
>       warn "       $0 help"
> @@ -280,9 +289,9 @@ help() {
>       echo ""
>       echo "    remove no longer existing EFI system partition UUIDs from 
> $ESP_LIST. Use --dry-run to only print outdated entries instead of removing 
> them."
>       echo ""
> -     echo "USAGE: $0 refresh"
> +     echo "USAGE: $0 refresh [--hook <name>]"
>       echo ""
> -     echo "    refresh all configured EFI system partitions."
> +     echo "    refresh all configured EFI system partitions. Use --hook to 
> only run the specified hook, omit to run all."
>       echo ""
>       echo "USAGE: $0 kernel <add|remove> <kernel-version>"
>       echo ""
> @@ -331,7 +340,14 @@ case "$1" in
>       ;;
>       'refresh')
>               shift
> -             refresh
> +             if [ "$#" -eq 0 ]; then
> +                     refresh
> +             elif [ "$#" -eq 2 ] && [ "$1" = "--hook" ]; then
> +                     refresh "$2"
> +             else
> +                     usage
> +                     exit 1
> +             fi
>               exit 0
>       ;;
>       'kernel'|'kernels')
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to