mirror of
https://github.com/systemd/systemd.git
synced 2024-10-30 14:55:37 +03:00
8702496bfb
The unlink command removes an entry from the ESP including referenced files that are not referenced in other entries. That is useful eg to have multiple entries that use the same kernel with different options. The cleanup command removes all files that are not referenced by any entry.
87 lines
3.0 KiB
Plaintext
87 lines
3.0 KiB
Plaintext
#compdef bootctl
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
__bootctl() {
|
|
bootctl --no-pager $@ 2>/dev/null
|
|
}
|
|
|
|
_bootctl_comp_ids() {
|
|
local expl
|
|
local -a ids
|
|
__bootctl list | while read a b; do
|
|
if [[ "$a" == "id:" ]]; then
|
|
ids+="$b"
|
|
fi
|
|
done
|
|
_wanted id expl 'boot id' compadd "$@" -a ids
|
|
}
|
|
|
|
_bootctl_set-default() {
|
|
_bootctl_comp_ids
|
|
}
|
|
|
|
_bootctl_set-oneshot() {
|
|
_bootctl_comp_ids
|
|
}
|
|
|
|
_bootctl_unlink() {
|
|
_bootctl_comp_ids
|
|
}
|
|
|
|
_bootctl_reboot-to-firmware() {
|
|
local -a _completions
|
|
_completions=( yes no )
|
|
typeset -U _completions
|
|
_describe 'possible values' _completions
|
|
}
|
|
|
|
(( $+functions[_bootctl_commands] )) || _bootctl_commands()
|
|
{
|
|
local -a _bootctl_cmds
|
|
_bootctl_cmds=(
|
|
"status:Show status of installed systemd-boot and EFI variables"
|
|
"install:Install systemd-boot to the ESP and EFI variables"
|
|
"update:Update systemd-boot in the ESP and EFI variables"
|
|
"remove:Remove systemd-boot from the ESP and EFI variables"
|
|
"is-installed:Test whether systemd-boot is installed in the ESP"
|
|
"random-seed:Initialize random seed in ESP and EFI variables"
|
|
"systemd-efi-options:Query or set system options string in EFI variable"
|
|
"reboot-to-firmware:Query or set reboot-to-firmware EFI flag"
|
|
"list:List boot loader entries"
|
|
"set-default:Set the default boot loader entry"
|
|
"set-oneshot:Set the default boot loader entry only for the next boot"
|
|
"set-timeout:Set the menu timeout"
|
|
"set-timeout-oneshot:Set the menu timeout for the next boot only"
|
|
"unlink:Remove boot loader entry"
|
|
"cleanup:Remove files in ESP not referenced in any boot entry"
|
|
)
|
|
if (( CURRENT == 1 )); then
|
|
_describe -t commands 'bootctl command' _bootctl_cmds || compadd "$@"
|
|
else
|
|
local curcontext="$curcontext"
|
|
cmd="${${_bootctl_cmds[(r)$words[1]:*]%%:*}}"
|
|
if (( $+functions[_bootctl_$cmd] )); then
|
|
_bootctl_$cmd
|
|
else
|
|
_message "no more options"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
_arguments \
|
|
{-h,--help}'[Prints a short help text and exits.]' \
|
|
'--version[Prints a short version string and exits.]' \
|
|
'--esp-path=[Path to the EFI System Partition (ESP)]:path:_directories' \
|
|
'--boot-path=[Path to the $BOOT partition]:path:_directories' \
|
|
{-p,--print-esp-path}'[Print path to the EFI system partition]' \
|
|
{-x,--print-boot-path}'[Print path to the $BOOT partition]' \
|
|
'--make-machine-id-directory=[Control creation and deletion of the top-level machine ID directory.]:options:(yes no auto)' \
|
|
'--no-variables[Do not touch EFI variables]' \
|
|
'--no-pager[Do not pipe output into a pager]' \
|
|
'--graceful[Do not fail when locating ESP or writing fails]' \
|
|
'--dry-run[Dry run (unlink and cleanup)]' \
|
|
'--root=[Operate under the specified directory]:PATH' \
|
|
'--image=[Operate on the specified image]:PATH' \
|
|
'--install-source[Where to pick files when using --root=/--image=]:options:(image host auto)' \
|
|
'*::bootctl command:_bootctl_commands'
|