File: snap

package info (click to toggle)
snapd 2.71-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 79,536 kB
  • sloc: ansic: 16,114; sh: 16,105; python: 9,941; makefile: 1,890; exp: 190; awk: 40; xml: 22
file content (83 lines) | stat: -rw-r--r-- 2,543 bytes parent folder | download | duplicates (2)
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
# -*- sh -*-
#
#  Copyright (C) 2016-2017 Canonical Ltd
#
#  This program is free software: you can redistribute it and/or modify
#  it under the terms of the GNU General Public License version 3 as
#  published by the Free Software Foundation.
#
#  This program 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 General Public License
#  along with this program.  If not, see <http://www.gnu.org/licenses/>.

_complete_snap() {
    # TODO: add support for sourcing this function from the core snap.
    local cur prev words cword
    _init_completion -n : || return

    if [[ ${#words[@]} -le 2 ]]; then
        # we're completing on the first word
        COMPREPLY=($(GO_FLAGS_COMPLETION=1 "${words[@]}"))
        return 0
    fi

    local command
    if [[ ${words[1]} =~ ^- ]]; then
        # global options take no args
        return 0
    fi

    for w in "${words[@]:1}"; do
        if [[ "$w" == "-h" || "$w" == "--help" ]]; then
            # completing on help gets confusing
            return 0
        fi
    done

    command="${words[1]}"

    # Only split on newlines
    local IFS=$'\n'

    # now we pass _just the bit that's being completed_ of the command
    # to snap for it to figure it out. go-flags isn't smart enough to
    # look at COMP_WORDS etc. itself.
    if [ "$command" = "debug" ]; then
        command="${words[2]}"
        COMPREPLY=($(GO_FLAGS_COMPLETION=1 snap debug "$command" "$cur"))
    elif [ "$command" = "routine" ]; then
        command="${words[2]}"
        COMPREPLY=($(GO_FLAGS_COMPLETION=1 snap routine "$command" "$cur"))
    else
        COMPREPLY=($(GO_FLAGS_COMPLETION=1 snap "$command" "$cur"))
    fi

    case $command in
        install|info|sign-build)
            _filedir '@(snap|comp)'
            ;;
        ack)
            _filedir
            ;;
        try)
            _filedir -d
            ;;
        connect|disconnect|interfaces)
            # interface completions will only end in ':' when they all
            # end in ':' (i.e. you either get offered snap names up to
            # and including the ':', or you get offered the whole thing)
            if [[ "$COMPREPLY" == *: ]]; then
                compopt -o nospace
            fi
    esac

    __ltrim_colon_completions "$cur"

    return 0
}

complete -F _complete_snap snap