]>
Commit | Line | Data |
---|---|---|
58a6c57b YW |
1 | # networkctl(1) completion -*- shell-script -*- |
2 | # SPDX-License-Identifier: LGPL-2.1+ | |
3 | # | |
4 | # This file is part of systemd. | |
5 | # | |
6 | # systemd is free software; you can redistribute it and/or modify it | |
7 | # under the terms of the GNU Lesser General Public License as published by | |
8 | # the Free Software Foundation; either version 2.1 of the License, or | |
9 | # (at your option) any later version. | |
10 | # | |
11 | # systemd is distributed in the hope that it will be useful, but | |
12 | # WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | # General Public License for more details. | |
15 | # | |
16 | # You should have received a copy of the GNU Lesser General Public License | |
17 | # along with systemd; If not, see <http://www.gnu.org/licenses/>. | |
18 | ||
19 | __contains_word () { | |
843cfcb1 ZJS |
20 | local w word=$1; shift |
21 | for w in "$@"; do | |
22 | [[ $w = "$word" ]] && return | |
23 | done | |
24 | return 1 | |
58a6c57b YW |
25 | } |
26 | ||
27 | _systemd_id128() { | |
843cfcb1 ZJS |
28 | local i verb comps |
29 | local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} | |
30 | local -A OPTS=( | |
31 | [STANDALONE]='-h --help --version -p --pretty' | |
32 | [ARG]='-a --app-specific' | |
33 | ) | |
58a6c57b | 34 | |
843cfcb1 ZJS |
35 | local -A VERBS=( |
36 | [STANDALONE]='new machine-id boot-id invocation-id help' | |
37 | ) | |
58a6c57b | 38 | |
843cfcb1 | 39 | _init_completion || return |
58a6c57b | 40 | |
843cfcb1 ZJS |
41 | if __contains_word "$prev" ${OPTS[ARG]}; then |
42 | case $prev in | |
43 | --app-specific|-a) | |
44 | comps="" | |
45 | ;; | |
46 | esac | |
47 | COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) | |
48 | return 0 | |
49 | fi | |
58a6c57b | 50 | |
843cfcb1 ZJS |
51 | if [[ "$cur" = -* ]]; then |
52 | COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) | |
53 | return 0 | |
54 | fi | |
58a6c57b | 55 | |
843cfcb1 ZJS |
56 | for ((i=0; i < COMP_CWORD; i++)); do |
57 | if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && | |
58 | ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then | |
59 | verb=${COMP_WORDS[i]} | |
60 | break | |
58a6c57b | 61 | fi |
843cfcb1 | 62 | done |
58a6c57b | 63 | |
843cfcb1 ZJS |
64 | if [[ -z $verb ]]; then |
65 | comps=${VERBS[*]} | |
66 | elif __contains_word "$verb" ${VERBS[STANDALONE]}; then | |
67 | comps='' | |
68 | fi | |
69 | ||
70 | COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) | |
71 | return 0 | |
58a6c57b YW |
72 | } |
73 | ||
74 | complete -F _systemd_id128 systemd-id128 |