]> kaliko git repositories - mpd-sima.git/blob - data/bash/completion.sh
1bbb2d7513bb6146a89b6110abb89b1379b97a15
[mpd-sima.git] / data / bash / completion.sh
1 # Copyright (c) 2010, 2011, 2013, 2014 Jack Kaliko <kaliko@azylum.org>
2 #
3 #  This file is part of MPD_sima
4 #
5 #  MPD_sima is free software: you can redistribute it and/or modify
6 #  it under the terms of the GNU General Public License as published by
7 #  the Free Software Foundation, either version 3 of the License, or
8 #  (at your option) any later version.
9 #
10 #  MPD_sima is distributed in the hope that it will be useful,
11 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #  GNU General Public License for more details.
14 #
15 #  You should have received a copy of the GNU General Public License
16 #  along with MPD_sima.  If not, see <http://www.gnu.org/licenses/>.
17 #
18 #
19
20 # Bash completion file
21 #
22 # On debian system either place this file in etc/bash_completion.d/ or source it
23 # in your barshrc.
24
25 _sima() {
26     local cur prev opts
27     COMPREPLY=()
28     _get_comp_words_by_ref cur prev
29     opts="-c --config \
30           -p --pid \
31           -l --log \
32           -v --log-level \
33           -S --host \
34           -P --mpd_port \
35           -h --help --version \
36           --var_dir"
37
38     if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
39         COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
40         return 0
41     fi
42
43     case "${prev}" in
44         --var_dir)
45             _filedir -d
46             ;;
47         -v|--log-level)
48             COMPREPLY=( $(compgen -W "debug info warning error" -- ${cur} ))
49             ;;
50         -p|--pid|-l|--log)
51             _filedir
52             ;;
53         -c|--config)
54             _filedir
55             if [ -z $XDG_DATA_HOME ]; then
56                 local confnames=$(for x in $(ls -1 $HOME/.config/mpd_sima/*.cfg 2>/dev/null) ; do echo "${x##*//}"; done)
57             else
58                 local confnames=$(for x in $(ls -1 $HOME/.config/mpd_sima/*.cfg $XDG_DATA_HOME/mpd_sima/*.cfg 2>/dev/null) ; do echo "${x##*//}"; done)
59             fi
60             COMPREPLY+=( $(compgen -W "${confnames}") )
61             return 0
62             ;;
63         --host|-S)
64             COMPREPLY=( $(compgen -A hostname ${cur}) )
65             ;;
66         *)
67             ;;
68     esac
69 }
70 complete -F _sima mpd_sima
71 complete -F _sima mpd-sima
72
73 _art_names_list() {
74     local IFS=$'\n'
75     compgen -W "${artists}" -- ${cur}
76 }
77
78 _simadb_cli() {
79     local cur prev opts artists
80     local IFS=$'\n'
81     COMPREPLY=()
82     _get_comp_words_by_ref cur prev
83     opts="--add_similarity -a --remove_similarity --remove_artist \
84     --purge_hist --view_artist --view_all \
85     --bl_curr_trk --bl_curr_art --bl_curr_al --bl_art --remove_bl --view_bl \
86     --dbfile -d \
87     --host -S --port -P \
88     --reciprocal -r --check_names -c \
89     --version -h --help"
90     opts=$(echo $opts | sed 's/ /\n/g')
91
92     if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
93         COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
94         return 0
95     fi
96
97     case "${prev}" in
98         --bl_curr*|--view_bl|--view_all|--purge_hist|--version|--help|-h)
99             return 0
100             ;;
101         -d|--dbfile)
102             _filedir
103             ;;
104         --host|-S)
105             COMPREPLY=( $(compgen -A hostname ${cur}) )
106             ;;
107         -a|--add_similarity|--view_artist|-v|--bl_art)
108             if [ -x /usr/bin/mpc ]; then
109                 artists=$(for x in $(/usr/bin/mpc list artist) ; do echo "'${x}'"; done)
110                 COMPREPLY=( $(compgen -W "${artists}" -- ${cur}) )
111                 return 0
112             fi
113             # It should also complete artist name when the string ends with a comma
114             return 0
115             ;;
116         *)
117             ;;
118     esac
119 }
120 complete -F _simadb_cli simadb_cli