ardupilot/Tools/gittools/path-nonlibraries.sh

58 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
usage() {
cat >&$1 <<EOF
Usage: $0 [OPTIONS]
Read a list of files relative to ardupilot's root directory and output the
non-libraries subsystems they belong to.
Options:
--show-paths, -p Print also file paths after the library name.
--help, -h Show this help message.
EOF
}
show_paths=false
while [[ -n $1 ]]; do
case "$1" in
--show-paths|-p)
show_paths=true
;;
--help|-h)
usage 1
exit 0
;;
*)
usage 2
exit 1
;;
esac
shift
done
SCRIPT_DIR=$(dirname $(realpath ${BASH_SOURCE[0]}))
ROOT=$(dirname $(git -C $SCRIPT_DIR rev-parse --git-dir))
if $show_paths; then
sedcmd="s,\([^/]\+\).*,\1\t\0,"
else
sedcmd="s,\([^/]\+\).*,\1,"
fi
grep -v "^libraries" | \
sed $sedcmd | \
sort | \
uniq | \
if $show_paths; then
while read d f; do
[[ -d "$ROOT/$d" ]] && printf "%s\t%s\n" "$d" "$f"
done
else
while read d; do
[[ -d "$ROOT/$d" ]] && echo "$d"
done
fi