File: dub.bash

package info (click to toggle)
dub 1.40.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 7,272 kB
  • sloc: sh: 2,104; ansic: 52; xml: 37; makefile: 35
file content (60 lines) | stat: -rw-r--r-- 1,974 bytes parent folder | download | duplicates (5)
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
# dub(1) completion                                   -*- shell-script -*-

_dub()
{
    local cur prev words cword split
    _init_completion -s || return

    local creation_commands
    creation_commands='init run build test generate describe clean dustmite'

    local management_commands
    management_commands='fetch remove upgrade add-path remove-path add-local remove-local list add-override remove-override list-overrides clean-caches'

    case "$prev" in
        -h|--help)
            return 0
            ;;
    esac

    $split && return 0

    # Use -h -v -q because lack of comma separation between -h and --help
    local common_options
    common_options='-h -v -q';

    local packages
    packages=$(dub list| awk '/^[[:space:]]+/ { print $1 }')

    if [[ $cword -eq 1 ]] ; then # if one argument given
        if [[ "$cur" == -* ]]; then
            COMPREPLY=( $( compgen -W '$common_options $( _parse_help "$1" )' -- "$cur" ) )
        else
            COMPREPLY=( $( compgen -W "$creation_commands $management_commands" -- "$cur" ) )
        fi
    else
        local command=${words[1]}; # use $prev instead?

        local specific_options
        specific_options=$( "$1" $command --help 2>/dev/null | _parse_help - )

        case $command in
            init | add-path | remove-path | add-local | remove-local | dustmite )
                COMPREPLY=( $( compgen -d -W '$common_options $specific_options' -- "$cur" ) )
                ;;
            run | build | test | generate | describe | clean | upgrade | add-override | remove-override )
                COMPREPLY=( $( compgen -W '$packages $common_options $specific_options' -- "$cur" ) )
                ;;
            *)
                COMPREPLY=( $( compgen -W '$common_options $specific_options' -- "$cur" ) )
                ;;
        esac
    fi

    [[ $COMPREPLY == *= ]] && compopt -o nospace
    return

    # NOTE: Disabled for now
    # _filedir
} &&
complete -F _dub dub