ardupilot/Tools/completion/bash/_sim_vehicle

97 lines
2.7 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');
# get options between "vehicle type " and closing ")", remove line return, remove spaces, anything before the opening (, remove the "|" and closing ")"
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');
# Get everything between "frame type" and "-C", remove first and last line, get line starting with caracters and ": " sequence, remove spaces and :
local supported_vehicle_list=$($caller --help | sed -n '/frame type/,/-C/p' | sed -e '1d' -e '$d' | sed -n 's/\(.*: \).*/\1/p' | sed -e 's/ //g' -e 's/://g')
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