blob: 6c985bc6ef636be8a98d32bd5f614ab4b88c4fe4 (
plain) (
blame)
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
|
# bash completion for firejail -*- shell-script -*-
#********************************************************************
# Script based on completions/configure script in bash-completion package in
# Debian. The original package is release under GPL v2 license, the webpage is
# http://bash-completion.alioth.debian.org
#*******************************************************************
__interfaces() {
cut -f 1 -d ':' /proc/net/dev | tail -n +3 | grep -v lo | xargs
}
_profiles() {
if [[ -d "$1" ]] ; then
ls -1 $1/*.profile 2>/dev/null | sed -E 's;^.*\/;;g'
fi
}
_all_profiles() {
local sys_profiles=$(_profiles _SYSCONFDIR_/firejail)
local user_profiles=$(_profiles $HOME/.config/firejail)
COMPREPLY=($(compgen -W "${sys_profiles} ${user_profiles}" -- "$cur"))
}
_firejail()
{
local cur prev words cword split
_init_completion -s || return
case $prev in
--help|--version|-debug-caps|--debug-syscalls|--debug-syscalls32|--list|--tree|--top|--join|--shutdown)
return 0
;;
--profile)
_all_profiles
return 0
;;
--hosts-file)
_filedir
return 0
;;
--chroot)
_filedir -d
return 0
;;
--landlock.enforce)
return 0
;;
--landlock.read)
_filedir
return 0
;;
--landlock.write)
_filedir
return 0
;;
--landlock.makeipc)
_filedir
return 0
;;
--landlock.makedev)
_filedir
return 0
;;
--landlock.execute)
_filedir
return 0
;;
--tmpfs)
_filedir
return 0
;;
--blacklist)
_filedir
return 0
;;
--noblacklist)
_filedir
return 0
;;
--whitelist)
_filedir
return 0
;;
--nowhitelist)
_filedir
return 0
;;
--read-only)
_filedir
return 0
;;
--read-write)
_filedir
return 0
;;
--bind)
_filedir
return 0
;;
--private)
_filedir
return 0
;;
--netfilter)
_filedir
return 0
;;
--net)
comps=$(__interfaces)
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
return 0
;;
esac
$split && return 0
# if $COMP_CONFIGURE_HINTS is not null, then completions of the form
# --option=SETTING will include 'SETTING' as a contextual hint
[[ "$cur" != -* ]] && _command && return 0
if [[ -n $COMP_CONFIGURE_HINTS ]]; then
COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | \
awk '/^ --[A-Za-z]/ { print $1; \
if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,].*//g' )" \
-- "$cur" ) )
[[ $COMPREPLY == *=* ]] && compopt -o nospace
else
COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
[[ $COMPREPLY == *= ]] && compopt -o nospace
fi
} &&
complete -F _firejail firejail
|