mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-21 18:03:41 +03:00
02d06ba180
When using --root=/--image= the binaries to install/update will be picked from the directory/image. Add an option to let the caller choose. By default (auto) the image is tried first, and if nothing is found then the host. The other options allow to strictly try the image or host and ignore the other.
80 lines
2.8 KiB
Plaintext
80 lines
2.8 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_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"
|
|
)
|
|
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]' \
|
|
'--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'
|