mirror of
				https://git.proxmox.com/git/systemd
				synced 2025-11-04 11:07:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#compdef bootctl                    -*- shell-script -*-
 | 
						|
# SPDX-License-Identifier: LGPL-2.1+
 | 
						|
 | 
						|
__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"
 | 
						|
    )
 | 
						|
    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]' \
 | 
						|
    '--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]' \
 | 
						|
    '*::bootctl command:_bootctl_commands'
 |