2024-02-27 14:54:49 +01:00
|
|
|
# shellcheck shell=bash
|
2022-10-19 14:43:50 +02:00
|
|
|
# systemd-dissect(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_dissect() {
|
|
|
|
|
local comps
|
|
|
|
|
local cur=${COMP_WORDS[COMP_CWORD]} prev_1=${COMP_WORDS[COMP_CWORD-1]} prev_2=${COMP_WORDS[COMP_CWORD-2]} words cword
|
|
|
|
|
local -A OPTS=(
|
|
|
|
|
[STANDALONE]='-h --help --version
|
discover-image: introduce per-user image directories
We nowadays support unprivileged invocation of systemd-nspawn +
systemd-vmspawn, but there was no support for discovering suitable disk
images (i.e. no per-user counterpart of /var/lib/machines). Add this
now, and hook it up everywhere.
Instead of hardcoding machined's, importd's, portabled's, sysupdated's
image discovery to RUNTIME_SCOPE_SYSTEM I introduced a field that make
the scope variable, even if this field is always initialized to
RUNTIME_SCOPE_SYSTEM for now. I think these four services should
eventually be updated to support a per-user concept too, this is
preparation for that, even though it doesn't outright add support for
this.
This is for the largest part not user visible, except for in nspawn,
vmspawn and the dissect tool. For the latter I added a pair of
--user/--system switches to select the discovery scope.
2024-12-09 11:38:05 +01:00
|
|
|
--user
|
|
|
|
|
--system
|
2023-09-25 16:46:11 +02:00
|
|
|
--discover
|
2022-10-19 14:43:50 +02:00
|
|
|
--no-pager
|
|
|
|
|
--no-legend
|
|
|
|
|
-r --read-only
|
|
|
|
|
--mkdir
|
2023-09-25 16:46:11 +02:00
|
|
|
--rmdir
|
|
|
|
|
--in-memory'
|
2022-10-19 14:43:50 +02:00
|
|
|
[ARG]='-m --mount -M
|
|
|
|
|
-u --umount -U
|
2024-01-19 15:50:15 +01:00
|
|
|
--attach
|
|
|
|
|
--detach
|
2022-10-20 08:07:37 +02:00
|
|
|
-l --list
|
2023-09-25 16:46:11 +02:00
|
|
|
--mtree
|
|
|
|
|
--with
|
2022-10-19 14:43:50 +02:00
|
|
|
-x --copy-from
|
|
|
|
|
-a --copy-to
|
2023-09-25 16:46:11 +02:00
|
|
|
--validate
|
2022-10-19 14:43:50 +02:00
|
|
|
--fsck
|
|
|
|
|
--growfs
|
|
|
|
|
--discard
|
|
|
|
|
--root-hash
|
|
|
|
|
--root-hash-sig
|
|
|
|
|
--verity-data
|
2023-09-25 16:46:11 +02:00
|
|
|
--image-policy
|
|
|
|
|
--json
|
|
|
|
|
--loop-ref
|
|
|
|
|
--mtree-hash'
|
2022-10-19 14:43:50 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
_init_completion || return
|
|
|
|
|
|
2023-09-25 16:46:11 +02:00
|
|
|
if __contains_word "$prev_1" ${OPTS[STANDALONE]}; then
|
|
|
|
|
case $prev_1 in
|
|
|
|
|
-h|--help|--version|--discover)
|
|
|
|
|
return 0
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [[ "$cur" = -* ]]; then
|
|
|
|
|
COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
|
|
|
|
|
return 0
|
|
|
|
|
fi
|
|
|
|
|
|
2022-10-19 14:43:50 +02:00
|
|
|
if __contains_word "$prev_1" ${OPTS[ARG]}; then
|
|
|
|
|
case $prev_1 in
|
2024-01-19 15:50:15 +01:00
|
|
|
-l|--list|--mtree|-m|--mount|-M|--attach|--detach|-x|--copy-from|-a|--copy-to|--verity-data|--validate|--with)
|
2022-10-19 14:43:50 +02:00
|
|
|
comps=$(compgen -A file -- "$cur")
|
|
|
|
|
compopt -o filenames
|
|
|
|
|
;;
|
|
|
|
|
-u|--umount|-U)
|
2023-09-25 16:46:11 +02:00
|
|
|
comps=$(compgen -A directory -- "$cur")
|
2022-10-19 14:43:50 +02:00
|
|
|
compopt -o dirnames
|
|
|
|
|
;;
|
2023-09-25 16:46:11 +02:00
|
|
|
--fsck|--growfs|--mtree-hash)
|
2022-10-19 14:43:50 +02:00
|
|
|
comps='yes no'
|
|
|
|
|
;;
|
|
|
|
|
--discard)
|
|
|
|
|
comps='disabled loop all crypto'
|
|
|
|
|
;;
|
|
|
|
|
--root-hash-sig)
|
|
|
|
|
comps="base64: $(compgen -A file -- "$cur")"
|
|
|
|
|
compopt -o filenames
|
|
|
|
|
;;
|
|
|
|
|
--json)
|
|
|
|
|
comps='pretty short off'
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
|
|
|
|
|
return 0
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if __contains_word "$prev_2" ${OPTS[ARG]}; then
|
|
|
|
|
case $prev_2 in
|
|
|
|
|
-m|--mount|-M)
|
2023-09-25 16:46:11 +02:00
|
|
|
comps=$(compgen -A directory -- "$cur")
|
2022-10-19 14:43:50 +02:00
|
|
|
compopt -o dirnames
|
|
|
|
|
;;
|
2023-09-25 16:46:11 +02:00
|
|
|
--with)
|
|
|
|
|
comps=$(compgen -A command -- "$cur")
|
|
|
|
|
compopt -o filenames
|
|
|
|
|
;;
|
2022-10-19 14:43:50 +02:00
|
|
|
*)
|
2023-09-25 16:46:11 +02:00
|
|
|
comps=$(compgen -A file -- "$cur")
|
2022-10-19 14:43:50 +02:00
|
|
|
compopt -o filenames
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
|
|
|
|
|
return 0
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
COMPREPLY=( $(compgen -A file -- "$cur") )
|
|
|
|
|
compopt -o filenames
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
complete -F _systemd_dissect systemd-dissect
|