summaryrefslogtreecommitdiffstats
path: root/.local/share/bash/bash_completion.d/coreutils
blob: 33d58cf7028793f91064db923db1bbc4998a64d0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Completions for various core utilities

# chown(1) completion
#
have chown &&
_chown()
{
    local cur prev split=false

    # Get cur and prev words; but don't treat user:group as separate words.
    _get_comp_words_by_ref -n : cur prev

    _split_longopt && split=true

    case "$prev" in
        --from)
            _usergroup
            return 0
            ;;
        --reference)
            _filedir
            return 0
            ;;
    esac

    $split && return 0

    if [[ "$cur" == -* ]]; then
        # Complete -options
        local w opts
        for w in "${COMP_WORDS[@]}" ; do
            [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break
        done
        COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes --dereference \
            --no-dereference --from --silent --quiet --reference --recursive \
            --verbose --help --version $opts' -- "$cur" ) )
    else
        local args

        # The first argument is an usergroup; the rest are filedir.
        _count_args :

        if [[ $args == 1 ]]; then
            _usergroup -u
        else
            _filedir
        fi
    fi
} &&
complete -F _chown chown


# chgrp(1) completion
#
have chgrp &&
_chgrp()
{
    local cur prev split=false

    COMPREPLY=()
    _get_comp_words_by_ref cur prev
    cur=${cur//\\\\/}

    _split_longopt && split=true

    if [[ "$prev" == --reference ]]; then
        _filedir
        return 0
    fi

    $split && return 0

    # options completion
    if [[ "$cur" == -* ]]; then
        local w opts
        for w in "${COMP_WORDS[@]}" ; do
            [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break
        done
        COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes --dereference \
            --no-dereference --silent --quiet --reference --recursive \
            --verbose --help --version $opts' -- "$cur" ) )
        return 0
    fi

    # first parameter on line or first since an option?
    if [[ $COMP_CWORD -eq 1 && "$cur" != -* || "$prev" == -* ]]; then
        _allowed_groups
    else
        _filedir || return 0
    fi

    return 0
} &&
complete -F _chgrp chgrp

# id(1) completion
#
have id &&
_id()
{
    local cur

    COMPREPLY=()
    _get_comp_words_by_ref cur

    if [[ "$cur" == -* ]]; then
        COMPREPLY=( $( compgen -W '-a -g --group -G --groups -n --name\
            -r --real -u --user --help --version' -- "$cur" ) )
    else
        COMPREPLY=( $( compgen -u "$cur" ) )
    fi
} &&
complete -F _id id

# mktemp(1) completion
#
have mktemp &&
_mktemp()
{
    COMPREPLY=()
    local cur prev split=false
    _get_comp_words_by_ref cur prev

    _split_longopt && split=true

    case "$prev" in
        --help|--version|--suffix)
            return 0
            ;;
        --tmpdir|-p)
            _filedir -d
            return 0
            ;;
    esac

    $split && return 0

    [[ "$cur" == -* ]] && \
        COMPREPLY=( $( compgen -W '-d -u -q -p -t' -- "$cur" ) )
} &&
complete -F _mktemp mktemp

# Local variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh