aboutsummaryrefslogtreecommitdiffstats
path: root/src/bash_completion/firejail.bash_completion.in
diff options
context:
space:
mode:
authorLibravatar Harald Kubota <harald.kubota@gmail.com>2021-01-02 15:32:15 +0900
committerLibravatar Harald Kubota <harald.kubota@gmail.com>2021-02-12 21:39:44 +0900
commita37ffc3374e23b8e6318965d84e408acf7a46b73 (patch)
tree0a0fac6fc98c14ec57ee3fff52ea641d37b72bff /src/bash_completion/firejail.bash_completion.in
parentfix #3859 (#3863) (diff)
downloadfirejail-a37ffc3374e23b8e6318965d84e408acf7a46b73.tar.gz
firejail-a37ffc3374e23b8e6318965d84e408acf7a46b73.tar.zst
firejail-a37ffc3374e23b8e6318965d84e408acf7a46b73.zip
Add first version of zsh completion
Don't have duplicate descriptions and put = signs where they belong to zsh completion function now dynamically adjusts for options (e.g. no --apparmor option without AppArmor configured) No EXTRA_CFLAGS for cpp Found main.c which does the argument processing. Moved some arguments into the correct #ifdef blocks Profile selection now much better Not more cpp. Using preproc.awk instead. Updated bash firejail command completion to add profiles ignore bash and zsh dynamically created completion scripts Moved bash/zsh completions out of ALL_ITEMS to fix make install Cleanup
Diffstat (limited to 'src/bash_completion/firejail.bash_completion.in')
-rw-r--r--src/bash_completion/firejail.bash_completion.in122
1 files changed, 122 insertions, 0 deletions
diff --git a/src/bash_completion/firejail.bash_completion.in b/src/bash_completion/firejail.bash_completion.in
new file mode 100644
index 000000000..00f04c310
--- /dev/null
+++ b/src/bash_completion/firejail.bash_completion.in
@@ -0,0 +1,122 @@
1# bash completion for firejail -*- shell-script -*-
2#********************************************************************
3# Script based on completions/configure script in bash-completion package in
4# Debian. The original package is release under GPL v2 license, the webpage is
5# http://bash-completion.alioth.debian.org
6#*******************************************************************
7
8__interfaces(){
9 cut -f 1 -d ':' /proc/net/dev | tail -n +3 | grep -v lo | xargs
10}
11
12_profiles() {
13 if [[ -d "$1" ]] ; then
14 ls -1 $1/*.profile 2>/dev/null | sed -E 's;^.*\/;;g'
15 fi
16}
17_all_profiles() {
18 local sys_profiles=$(_profiles _SYSCONFDIR_/firejail)
19 local user_profiles=$(_profiles $HOME/.config/firejail)
20 COMPREPLY=($(compgen -W "${sys_profiles} ${user_profiles}" -- "$cur"))
21}
22
23
24_firejail()
25{
26 local cur prev words cword split
27 _init_completion -s || return
28
29 case $prev in
30 --help|--version|-debug-caps|--debug-syscalls|--debug-syscalls32|--list|--tree|--top|--join|--shutdown)
31 return 0
32 ;;
33 --profile)
34 _all_profiles
35 return 0
36 ;;
37 --hosts-file)
38 _filedir
39 return 0
40 ;;
41 --chroot)
42 _filedir -d
43 return 0
44 ;;
45 --cgroup)
46 _filedir -d
47 return 0
48 ;;
49 --tmpfs)
50 _filedir
51 return 0
52 ;;
53 --blacklist)
54 _filedir
55 return 0
56 ;;
57 --noblacklist)
58 _filedir
59 return 0
60 ;;
61 --whitelist)
62 _filedir
63 return 0
64 ;;
65 --nowhitelist)
66 _filedir
67 return 0
68 ;;
69 --read-only)
70 _filedir
71 return 0
72 ;;
73 --read-write)
74 _filedir
75 return 0
76 ;;
77 --bind)
78 _filedir
79 return 0
80 ;;
81 --private)
82 _filedir
83 return 0
84 ;;
85 --netfilter)
86 _filedir
87 return 0
88 ;;
89 --shell)
90 _filedir
91 return 0
92 ;;
93 --audit)
94 _filedir
95 return 0
96 ;;
97 --net)
98 comps=$(__interfaces)
99 COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
100 return 0
101 ;;
102 esac
103
104 $split && return 0
105
106 # if $COMP_CONFIGURE_HINTS is not null, then completions of the form
107 # --option=SETTING will include 'SETTING' as a contextual hint
108 [[ "$cur" != -* ]] && _command && return 0
109
110 if [[ -n $COMP_CONFIGURE_HINTS ]]; then
111 COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | \
112 awk '/^ --[A-Za-z]/ { print $1; \
113 if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,].*//g' )" \
114 -- "$cur" ) )
115 [[ $COMPREPLY == *=* ]] && compopt -o nospace
116 else
117 COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
118 [[ $COMPREPLY == *= ]] && compopt -o nospace
119 fi
120
121} &&
122complete -F _firejail firejail