# 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 . __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 --no-pager --no-legend -r --read-only --mkdir --rmdir --in-memory' [ARG]='-m --mount -M -u --umount -U --attach --detach -l --list --mtree --with -x --copy-from -a --copy-to --validate --fsck --growfs --discard --root-hash --root-hash-sig --verity-data --image-policy --json --loop-ref --mtree-hash' ) _init_completion || return 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 if __contains_word "$prev_1" ${OPTS[ARG]}; then case $prev_1 in -l|--list|--mtree|-m|--mount|-M|--attach|--detach|-x|--copy-from|-a|--copy-to|--verity-data|--validate|--with) comps=$(compgen -A file -- "$cur") compopt -o filenames ;; -u|--umount|-U) comps=$(compgen -A directory -- "$cur") compopt -o dirnames ;; --fsck|--growfs|--mtree-hash) 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) comps=$(compgen -A directory -- "$cur") compopt -o dirnames ;; --with) comps=$(compgen -A command -- "$cur") compopt -o filenames ;; *) comps=$(compgen -A file -- "$cur") 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