summaryrefslogtreecommitdiff
path: root/completions/coreutils
blob: 4b40b15f250fe560e4527df27f7eb6b7283273fe (plain)
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
# Completions for various core utilities

# chown(1) completion
#
_chown()
{
    local cur prev words cword split
    # Don't treat user:group as separate words.
    _init_completion -s -n : || return

    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 "${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 -eq 1 ]]; then
            _usergroup -u
        else
            _filedir
        fi
    fi
} &&
complete -F _chown chown


# chgrp(1) completion
#
_chgrp()
{
    local cur prev words cword split
    _init_completion -s || return

    cur=${cur//\\\\/}

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

    $split && return 0

    # options completion
    if [[ "$cur" == -* ]]; then
        local w opts
        for w in "${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 [[ $cword -eq 1 && "$cur" != -* || "$prev" == -* ]]; then
        _allowed_groups "$cur"
    else
        _filedir || return 0
    fi

    return 0
} &&
complete -F _chgrp chgrp

# id(1) completion
#
_id()
{
    local cur prev words cword
    _init_completion || return

    if [[ "$cur" == -* ]]; then
        local opts=$( _parse_help "$1" )
        [[ $opts ]] || opts="-G -g -u" # POSIX fallback
        COMPREPLY=( $( compgen -W "$opts" -- "$cur" ) )
    else
        COMPREPLY=( $( compgen -u "$cur" ) )
    fi
} &&
complete -F _id id

# mktemp(1) completion
#
_mktemp()
{
    local cur prev words cword split
    _init_completion -s || return

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

    $split && return 0

    if [[ "$cur" == -* ]]; then
        local opts=$( _parse_help "$1" )
        [[ $opts ]] || opts="-d -u -q -p -t" # non-GNU fallback
        COMPREPLY=( $( compgen -W "$opts" -- "$cur" ) )
        [[ $COMPREPLY == *= ]] && compopt -o nospace
    fi
} &&
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