Skip to content

Commit fe764f4

Browse files
committed
Add bash-completion support
Loosely based on bash-completion's sudo support
1 parent 9a25a6d commit fe764f4

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

GNUmakefile

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
PROG= doas
2-
MAN= doas.1 doas.conf.5
1+
PROG= doas
2+
MAN= doas.1 doas.conf.5
3+
COMPLETION= doas.completion
34

4-
SRCS= parse.y doas.c env.c
5+
SRCS= parse.y doas.c env.c
56

67
include config.mk
78

@@ -19,17 +20,20 @@ install: ${PROG} ${MAN}
1920
mkdir -p -m 0755 ${DESTDIR}${BINDIR}
2021
mkdir -p -m 0755 ${DESTDIR}${MANDIR}/man1
2122
mkdir -p -m 0755 ${DESTDIR}${MANDIR}/man5
23+
mkdir -p -m 0755 ${DESTDIR}/share/bash-completion/completions
2224
cp -f ${PROG} ${DESTDIR}${BINDIR}
2325
chown ${BINOWN}:${BINGRP} ${DESTDIR}${BINDIR}/${PROG}
2426
chmod ${BINMODE} ${DESTDIR}${BINDIR}/${PROG}
2527
cp -f doas.1 ${DESTDIR}${MANDIR}/man1
2628
cp -f doas.conf.5 ${DESTDIR}${MANDIR}/man5
29+
cp -f doas.completion ${DESTDIR}/share/bash-completion/completions/doas
2730

2831
uninstall:
2932
rm -f ${DESTDIR}${BINDIR}/${PROG}
3033
rm -f ${DESTDIR}${PAMDIR}/doas
3134
rm -f ${DESTDIR}${MANDIR}/man1/doas.1
3235
rm -f ${DESTDIR}${MANDIR}/man5/doas.conf.5
36+
rm -f ${DESTDIR}/share/bash-completion/completions/doas
3337

3438
clean:
3539
rm -f ${PROG} ${OBJS} ${OBJS:.o=.d} parse.c

doas.completion

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# bash completion for doas(1) -*- shell-script -*-
2+
3+
_doas() {
4+
local cur prev words cword split
5+
_init_completion -s || return
6+
7+
for ((i = 1; i <= cword; i++)); do
8+
if [[ ${words[i]} != -* ]]; then
9+
local PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
10+
local root_command=${words[i]}
11+
_command_offset $i
12+
return
13+
fi
14+
15+
[[ ${words[i]} == -u ]] || [[ ${words[i]} == -C ]] && ((i++))
16+
done
17+
} && complete -F _doas doas
18+
19+
# ex: filetype=sh

0 commit comments

Comments
 (0)