File: chflags

package info (click to toggle)
bash-completion 1%3A2.16.0-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 7,424 kB
  • sloc: python: 11,241; makefile: 2,471; sh: 934; perl: 85; awk: 55; xml: 29; ansic: 7; java: 5; ruby: 2
file content (52 lines) | stat: -rw-r--r-- 1,697 bytes parent folder | download
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
# chflags(1) completion                                      -*- shell-script -*-

[[ $OSTYPE == *@(bsd|darwin)* ]] || return 1

# References
#
# [1] FreeBSD - https://man.freebsd.org/cgi/man.cgi?chflags(1)
# [2] NetBSD - https://man.netbsd.org/NetBSD-9.0/chflags.1
# [3] OpenBSD - https://man.openbsd.org/chflags.1

_comp_cmd_chflags()
{
    local cur prev words cword comp_args
    _comp_initialize -- "$@" || return

    if [[ $cur == -* ]]; then
        # Complete -options
        local w opts=""
        for w in "${words[@]}"; do
            [[ $w == -R ]] && opts="-H -L -P" && break
        done
        [[ $OSTYPE == *freebsd* ]] && opts="$opts -x"
        _comp_compgen -- -W '-f -h -v -R $opts'
    else
        local REPLY
        # The first argument is a list of flags; the rest are filedir.
        _comp_count_args
        if ((REPLY == 1)); then
            case "$OSTYPE" in
                *netbsd*)
                    _comp_delimited , -W '
                        arch opaque nodump sappnd schg uappnd uchg'
                    ;;
                *openbsd*)
                    _comp_delimited , -W 'arch nodump sappnd schg uappnd uchg'
                    ;;
                *)
                    _comp_delimited , -W '
                        simmutable nosimmutable sappend nosappend archived
                        noarchived sunlink nosunlink opaque noopaque nodump
                        dump uimmutable nouimmutable uappend nouappend hidden
                        nohidden uunlink nouunlink'
                    ;;
            esac
        else
            _comp_compgen_filedir
        fi
    fi
} &&
    complete -F _comp_cmd_chflags chflags

# ex: filetype=sh