mirror of
https://github.com/systemd/systemd.git
synced 2026-08-09 17:38:42 +00:00
It's useful to be able to check what firmware description vmspawn will select. In particular, this will allow me to figure out the nvram template file that will be picked up so I can pick it up in mkosi and operate on it to pass a modified version of it to vmspawn with --efi-nvram-template=.
83 lines
3.2 KiB
Bash
83 lines
3.2 KiB
Bash
# shellcheck shell=bash
|
|
# systemd-vmspawn(1) completion -*- shell-script -*-
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
#
|
|
# This file is part of systemd.
|
|
#
|
|
# systemd is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU Lesser General Public License as published by
|
|
# the Free Software Foundation; either version 2.1 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# systemd is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public License
|
|
# along with systemd; If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
__contains_word() {
|
|
local w word=$1; shift
|
|
for w in "$@"; do
|
|
[[ $w = "$word" ]] && return
|
|
done
|
|
}
|
|
|
|
_systemd_vmspawn() {
|
|
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} words cword
|
|
local i verb comps
|
|
|
|
local -A OPTS=(
|
|
[STANDALONE]='-h --help --version -q --quiet --no-pager -n --network-tap --network-user-mode --user --system -x --ephemeral'
|
|
[PATH]='-D --directory -i --image --linux --initrd --extra-drive --forward-journal --efi-nvram-template'
|
|
[BOOL]='--kvm --vsock --tpm --discard-disk --register --pass-ssh-key'
|
|
[SECURE_BOOT]='--secure-boot'
|
|
[FIRMWARE]='--firmware'
|
|
[FIRMWARE_FEATURES]='--firmware-features'
|
|
[BIND]='--bind --bind-ro'
|
|
[SSH_KEY]='--ssh-key'
|
|
[CONSOLE]='--console'
|
|
[ARG]='--cpus --ram --vsock-cid -M --machine --uuid --private-users --background --set-credential --load-credential'
|
|
[IMAGE_FORMAT]='--image-format'
|
|
[IMAGE_DISK_TYPE]='--image-disk-type'
|
|
)
|
|
|
|
_init_completion || return
|
|
|
|
if __contains_word "$prev" ${OPTS[BOOL]}; then
|
|
comps='yes no'
|
|
elif __contains_word "$prev" ${OPTS[SECURE_BOOT]}; then
|
|
comps='yes no auto'
|
|
elif __contains_word "$prev" ${OPTS[PATH]}; then
|
|
compopt -o nospace -o filenames
|
|
comps=$(compgen -f -- "$cur" )
|
|
elif __contains_word "$prev" ${OPTS[FIRMWARE]}; then
|
|
compopt -o nospace -o filenames
|
|
comps="list describe $(compgen -f -- "$cur" )"
|
|
elif __contains_word "$prev" ${OPTS[FIRMWARE_FEATURES]}; then
|
|
comps='list'
|
|
elif __contains_word "$prev" ${OPTS[BIND]}; then
|
|
compopt -o nospace -o filenames
|
|
comps=$(compgen -f -- "${cur}" )
|
|
elif __contains_word "$prev" ${OPTS[SSH_KEY]}; then
|
|
comps='dsa ecdsa ecdsa-sk ed25519 ed25519-sk rsa'
|
|
elif __contains_word "$prev" ${OPTS[CONSOLE]}; then
|
|
comps='interactive native gui read-only headless'
|
|
elif __contains_word "$prev" ${OPTS[IMAGE_FORMAT]}; then
|
|
comps='raw qcow2'
|
|
elif __contains_word "$prev" ${OPTS[IMAGE_DISK_TYPE]}; then
|
|
comps='virtio-blk virtio-scsi nvme'
|
|
elif __contains_word "$prev" ${OPTS[ARG]}; then
|
|
comps=''
|
|
else
|
|
COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
|
|
return 0
|
|
fi
|
|
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
|
|
return 0
|
|
|
|
}
|
|
|
|
complete -F _systemd_vmspawn systemd-vmspawn
|