mirror of
				https://git.proxmox.com/git/systemd
				synced 2025-10-31 14:02:18 +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'
 | 
