| # 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 | |
| --no-pager | |
| --no-legend | |
| -r --read-only | |
| --mkdir | |
| --rmdir' | |
| [ARG]='-m --mount -M | |
| -u --umount -U | |
| -l --list | |
| -x --copy-from | |
| -a --copy-to | |
| --fsck | |
| --growfs | |
| --discard | |
| --root-hash | |
| --root-hash-sig | |
| --verity-data | |
| --json' | |
| ) | |
| _init_completion || return | |
| if __contains_word "$prev_1" ${OPTS[ARG]}; then | |
| case $prev_1 in | |
| -l|--list|-m|--mount|-M|-x|--copy-from|-a|--copy-to|--verity-data) | |
| comps=$(compgen -A file -- "$cur") | |
| compopt -o filenames | |
| ;; | |
| -u|--umount|-U) | |
| comps=$(compgen -A directory -- "$cur" ) | |
| compopt -o dirnames | |
| ;; | |
| --fsck|--growfs) | |
| 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 | |
| ;; | |
| *) | |
| comps=$(compgen -A file -- "$cur" ) | |
| compopt -o filenames | |
| ;; | |
| esac | |
| COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) | |
| return 0 | |
| fi | |
| if [[ "$cur" = -* ]]; then | |
| COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) | |
| return 0 | |
| fi | |
| COMPREPLY=( $(compgen -A file -- "$cur") ) | |
| compopt -o filenames | |
| return 0 | |
| } | |
| complete -F _systemd_dissect systemd-dissect |