Files
systemd/shell-completion/bash/systemd-vmspawn
T
Daan De Meyer 4e805ec152 vmspawn: Add --user/--system and support user session machined registration
The UX of registering with the user session machined
instance is much better as there won't be an authorization
prompt. To make that available for users, let's add --user
and --system switches for vmspawn. For backwards compat, we'll
still try to register with the system machined instance if the
user machined instance is not available.
2026-01-02 08:49:36 +09:00

71 lines
2.6 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'
[PATH]='-D --directory -i --image --linux --initrd --extra-drive --forward-journal'
[BOOL]='--kvm --vsock --tpm --secure-boot --discard-disk --register --pass-ssh-key'
[FIRMWARE]='--firmware'
[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'
)
_init_completion || return
if __contains_word "$prev" ${OPTS[BOOL]}; then
comps='yes no'
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 $(compgen -f -- "$cur" )"
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'
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