--example)
COMPREPLY=( $( compgen -W "$(_get_examples)" -- "$cur" ) )
;;
+ --target)
+ COMPREPLY=( $( compgen -W "$(_get_targets)" -- "$cur" ) )
+ ;;
help)
COMPREPLY=( $( compgen -W "$__cargo_commands" -- "$cur" ) )
;;
echo "${names[@]}"
fi
}
+
+_get_targets(){
+ local TARGETS=()
+ local FIND_PATHS=( "/" )
+ local CURRENT_PATH=$(_locate_manifest)
+ while [[ "$CURRENT_PATH" != "/" ]]; do
+ FIND_PATHS+=( "$CURRENT_PATH" )
+ CURRENT_PATH=$(dirname $CURRENT_PATH)
+ done
+ for FIND_PATH in ${FIND_PATHS[@]}; do
+ if [[ -f "$FIND_PATH"/.cargo/config ]]; then
+ LINES=( `grep "$FIND_PATH"/.cargo/config -e "^\[target\."` )
+ for LINE in ${LINES[@]}; do
+ TARGETS+=(`sed 's/^\[target\.\(.*\)\]$/\1/' <<< $LINE`)
+ done
+ fi
+ done
+ echo "${TARGETS[@]}"
+}
# vim:ft=sh