mirror of https://github.com/ArduPilot/ardupilot
95 lines
2.3 KiB
Bash
95 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
_sim_vehicle() {
|
|
local cur prev opts
|
|
COMPREPLY=()
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
prev="${COMP_WORDS[COMP_CWORD - 1]}"
|
|
|
|
# TODO: generate for waf help
|
|
opts="--help -h"
|
|
opts+=" -j --jobs"
|
|
opts+=" -N --no-rebuild"
|
|
opts+=" -D --debug"
|
|
opts+=" -c --clean"
|
|
opts+=" -I --instance"
|
|
opts+=" -V --valgrind"
|
|
opts+=" --callgrind"
|
|
opts+=" -T --tracker"
|
|
opts+=" -A --sitl-instance-args"
|
|
opts+=" -G --gdb"
|
|
opts+=" -g --gdb-stopped"
|
|
opts+=" --lldb"
|
|
opts+=" --lldb-stopped"
|
|
opts+=" -d --delay-start"
|
|
opts+=" -B --breakpoint"
|
|
opts+=" -M --mavlink-gimbal"
|
|
opts+=" -L --location"
|
|
opts+=" -l --custom-location"
|
|
opts+=" -S --speedup"
|
|
opts+=" -t --tracker-location"
|
|
opts+=" -w --wipe-eeprom"
|
|
opts+=" -m --mavproxy-args"
|
|
opts+=" --strace"
|
|
opts+=" --model"
|
|
opts+=" --use-dir"
|
|
opts+=" --no-mavproxy"
|
|
opts+=" --fresh-params"
|
|
opts+=" --mcast"
|
|
opts+=" --osd"
|
|
opts+=" --tonealarm"
|
|
opts+=" --rgbled"
|
|
opts+=" --add-param-file"
|
|
opts+=" --no-extra-ports"
|
|
opts+=" -Z --swarm"
|
|
opts+=" --flash-storage"
|
|
opts+=" --out"
|
|
opts+=" --map"
|
|
opts+=" --console"
|
|
opts+=" --aircraft"
|
|
opts+=" --moddebug"
|
|
opts+=" -v --vehicle"
|
|
opts+=" -f --frame"
|
|
|
|
# Prevent word reuse TODO: add -vvv case
|
|
lim=$((COMP_CWORD - 1))
|
|
for i in $(seq 0 $lim); do
|
|
if [[ $opts == *"${COMP_WORDS[i]}"* ]]; then
|
|
opts=${opts//${COMP_WORDS[i]}/}
|
|
opts=${opts//--${COMP_WORDS[i]}/}
|
|
fi
|
|
done
|
|
|
|
case $prev in
|
|
-v | --vehicle)
|
|
# get the calling program, remove anything after the space == all commands arguments
|
|
local caller; caller=$(echo $@ | sed 's/ .*//g');
|
|
opts=$($caller --list-vehicle)
|
|
COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
|
|
return 0
|
|
;;
|
|
-f | --frame)
|
|
# get the calling program, remove anything after the space == all commands arguments
|
|
local caller; caller=$(echo $@ | sed 's/ .*//g');
|
|
local supported_vehicle_list=$($caller --list-vehicle)
|
|
local frames;
|
|
for v in $supported_vehicle_list
|
|
do
|
|
if [[ ${COMP_WORDS[@]} == *"$v"* ]]
|
|
then
|
|
frames=$($caller --list-frame "$v")
|
|
break
|
|
fi
|
|
done
|
|
COMPREPLY=($(compgen -W "${frames}" -- ${cur}))
|
|
return 0
|
|
|
|
;;
|
|
esac
|
|
|
|
COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
|
|
}
|
|
|
|
complete -F _sim_vehicle sim_vehicle.py
|
|
|