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