summaryrefslogtreecommitdiff
path: root/contrib/pk-completion.bash
blob: 6decb4111d5fac856fcba4b651b312d81183d70f (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
#
# bash completion support for PackageKit's console commands.
#
# Copyright (C) 2007 James Bowes <jbowes@dangerouslyinc.com>
# Copyright (C) 2010 Richard Hughes <richard@hughsie.com>
#
# Licensed under the GNU General Public License Version 2
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# To use the completion:
#   1. Copy this file somewhere (e.g. ~/.pk-completion.sh).
#   2. Add the following line to your .bashrc:
#        source ~/.git-completion.sh


__pkcon_commandlist="
    accept-eula
    get-roles
    get-depends
    get-details
    get-distro-upgrades
    get-files
    get-filters
    get-groups
    get-packages
    download
    get-requires
    get-time
    get-transactions
    get-update-detail
    get-updates
    get-categories
    install
    install-local
    refresh
    remove
    repo-disable
    repo-enable
    repo-list
    repo-set-data
    resolve
    search
    update
    upgrade-system
    repair
    "

__pkconcomp ()
{
	local all c s=$'\n' IFS=' '$'\t'$'\n'
	local cur="${COMP_WORDS[COMP_CWORD]}"
	if [ $# -gt 2 ]; then
		cur="$3"
	fi
	for c in $1; do
		case "$c$4" in
		*.)    all="$all$c$4$s" ;;
		*)     all="$all$c$4 $s" ;;
		esac
	done
	IFS=$s
	COMPREPLY=($(compgen -P "$2" -W "$all" -- "$cur"))
	return
}

_pkcon_search ()
{
	local i c=1 command
	while [ $c -lt $COMP_CWORD ]; do
		i="${COMP_WORDS[c]}"
		case "$i" in
            name|details|group|file)
			command="$i"
			break
			;;
		esac
		c=$((++c))
	done

	if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
        __pkconcomp "name details group file"
    fi
    return
}

_pkcon ()
{
	local i c=1 command

	while [ $c -lt $COMP_CWORD ]; do
		i="${COMP_WORDS[c]}"
		case "$i" in
		--version|--help|--verbose|--nowait|-v|-n|-h|-?) ;;
		*) command="$i"; break ;;
		esac
		c=$((++c))
	done

    if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
		case "${COMP_WORDS[COMP_CWORD]}" in
		--*=*) COMPREPLY=() ;;
		--*)   __pkconcomp "
			--version
			--filter
			--verbose
            --help
            --nowait
			"
			;;
        -*) __pkconcomp "
            -v
            -n
            -h
            -?
			--version
			--verbose
            --help
            --filter
            --nowait
            "
            ;;
		*)     __pkconcomp "$__pkcon_commandlist" ;;
		esac
		return
	fi

	case "$command" in
	search)      _pkcon_search ;;
	*)           COMPREPLY=() ;;
	esac
}

complete -o default -o nospace -F _pkcon pkcon