Skip to content

Commit afe28ee

Browse files
committed
Improve bash completion
1 parent 64645c5 commit afe28ee

File tree

3 files changed

+34
-17
lines changed

3 files changed

+34
-17
lines changed

opensips/event/__main__.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
parser.add_argument('-bc', '--bash-complete',
6161
type=str,
6262
nargs='?',
63-
const='',
63+
const='events',
6464
help='Provide options for bash completion')
6565

6666
event = parser.add_argument_group('event')
@@ -116,32 +116,38 @@ def main():
116116
sys.exit(1)
117117

118118
if args.bash_complete is not None:
119-
if args.bash_complete != '':
120-
if len(args.bash_complete) > 1:
121-
last_arg = '--' + args.bash_complete
122-
else:
123-
last_arg = '-' + args.bash_complete
119+
if args.bash_complete not in ['params', 'events']:
120+
last_arg = '--' + args.bash_complete if len(args.bash_complete) > 1 else '-' + args.bash_complete
124121

125122
for action in parser._actions:
126123
if last_arg in action.option_strings:
127124
if action.choices:
128125
print(' '.join(action.choices))
129126
break
130127
sys.exit(0)
131-
else:
128+
129+
if args.bash_complete == 'params':
132130
options = []
133131
for action in parser._actions:
134132
for opt in action.option_strings:
135133
options.append(opt)
136134
print(' '.join(options))
135+
sys.exit(0)
136+
137+
# if args.bash_complete == 'events':
137138
try:
138139
response = mi.execute('events_list', [])
139140
events = response.get("Events", [])
140141
event_names = [event["name"] for event in events]
141142
print(' '.join(event_names))
142143
sys.exit(0)
143144
except Exception as e:
144-
sys.exit(1)
145+
options = []
146+
for action in parser._actions:
147+
for opt in action.option_strings:
148+
options.append(opt)
149+
print(' '.join(options))
150+
sys.exit(0)
145151

146152
if args.event is None:
147153
print(f'ERROR: unknown type: {args.type}')

opensips/mi/__main__.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
group.add_argument('-bc', '--bash-complete',
6767
type=str,
6868
nargs='?',
69-
const='',
69+
const='commands',
7070
help='Provide options for bash completion')
7171

7272
group = parser.add_mutually_exclusive_group(required=False)
@@ -109,30 +109,36 @@ def main():
109109

110110

111111
if args.bash_complete is not None:
112-
if args.bash_complete != '':
113-
if len(args.bash_complete) > 1:
114-
last_arg = '--' + args.bash_complete
115-
else:
116-
last_arg = '-' + args.bash_complete
112+
if args.bash_complete not in ['params', 'commands']:
113+
last_arg = '--' + args.bash_complete if len(args.bash_complete) > 1 else '-' + args.bash_complete
117114

118115
for action in parser._actions:
119116
if last_arg in action.option_strings:
120117
if action.choices:
121118
print(' '.join(action.choices))
122119
break
123120
sys.exit(0)
124-
else:
121+
122+
if args.bash_complete == 'params':
125123
options = []
126124
for action in parser._actions:
127125
for opt in action.option_strings:
128126
options.append(opt)
129127
print(' '.join(options))
128+
sys.exit(0)
129+
130+
# if args.bash_complete == 'commands':
130131
try:
131132
response = mi.execute('which', [])
132133
print(" ".join(response))
133134
sys.exit(0)
134135
except Exception as e:
135-
sys.exit(1)
136+
options = []
137+
for action in parser._actions:
138+
for opt in action.option_strings:
139+
options.append(opt)
140+
print(' '.join(options))
141+
sys.exit(0)
136142

137143
if args.stats:
138144
args.command = 'get_statistics'

utils/completion/python-opensips

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ function _opensips-complete() {
1414
completed_args="$completed_args $prev"
1515
fi
1616
fi
17-
opts="$($1 $completed_args -bc)"
17+
18+
if [[ "${cur:0:1}" == "-" ]]; then
19+
opts="$($1 $completed_args -bc params)"
20+
else
21+
opts="$($1 $completed_args -bc)"
22+
fi
1823
else
1924
while [[ "${prev:0:1}" == "-" ]]; do
2025
prev="${prev:1}"

0 commit comments

Comments
 (0)