mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-14 20:18:39 +00:00
30d89a121d
Otherwise, the path "src/c-stdaux/src/docs/conf.py" matches for formatting. But this file is imported via git-subtree, we don't want to format it. Filter out such paths.
101 lines
2.2 KiB
Bash
Executable file
101 lines
2.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
_print() {
|
|
printf '%s\n' "$*" >&2
|
|
}
|
|
|
|
die() {
|
|
_print "$*"
|
|
exit 1
|
|
}
|
|
|
|
NM_ROOT="$(git rev-parse --show-toplevel)" || die "not inside a git repository"
|
|
NM_PREFIX="$(git rev-parse --show-prefix)" || die "not inside a git repository"
|
|
|
|
cd "$NM_ROOT" || die "failed to cd into \$NM_ROOT\""
|
|
|
|
if [ ! -f "./src/core/main.c" ]; then
|
|
die "Error: \"$NM_ROOT\" does not look like NetworkManager source tree"
|
|
fi
|
|
|
|
BLACK="${BLACK:-black}"
|
|
|
|
if ! command -v "$BLACK" &> /dev/null; then
|
|
_print "Error: black is not installed. On RHEL/Fedora/CentOS run 'dnf install black'"
|
|
exit 77
|
|
fi
|
|
|
|
OLD_IFS="$IFS"
|
|
|
|
usage() {
|
|
printf "Usage: %s [OPTION]...\n" "$(basename "$0")"
|
|
printf "Reformat python source files using python black.\n\n"
|
|
printf "OPTIONS:\n"
|
|
printf " -i Reformat files (this is the default)\n"
|
|
printf " -n|--dry-run|--check Only check the files (contrary to \"-i\")\n"
|
|
printf " --show-filenames Only print the filenames that would be checked/formatted\n"
|
|
printf " -h Print this help message\n"
|
|
}
|
|
|
|
TEST_ONLY=0
|
|
SHOW_FILENAMES=0
|
|
|
|
while (( $# )); do
|
|
case "$1" in
|
|
-h)
|
|
usage
|
|
exit 0
|
|
;;
|
|
-n|--dry-run|--check)
|
|
TEST_ONLY=1
|
|
shift
|
|
continue
|
|
;;
|
|
-i)
|
|
TEST_ONLY=0
|
|
shift
|
|
continue
|
|
;;
|
|
--show-filenames)
|
|
SHOW_FILENAMES=1
|
|
shift
|
|
continue
|
|
;;
|
|
*)
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
IFS=$'\n'
|
|
FILES=()
|
|
FILES+=( $(git ls-tree --name-only -r HEAD | grep '\.py$') )
|
|
FILES+=( $(git grep -l '#!.*\<p[y]thon3\?\>') )
|
|
FILES=( $(printf "%s\n" "${FILES[@]}" | sort -u) )
|
|
|
|
# Filter out paths that are forked from upstream projects and not
|
|
# ours to reformat.
|
|
FILES=( $(
|
|
printf "%s\n" "${FILES[@]}" |
|
|
sed \
|
|
-e '/^src\/[cn]-[^/]\+\//d' \
|
|
-e '/^src\/libnm-systemd-[^/]\+\/src\//d'
|
|
) )
|
|
|
|
IFS="$OLD_IFS"
|
|
|
|
if [ $SHOW_FILENAMES = 1 ]; then
|
|
printf '%s\n' "${FILES[@]}"
|
|
exit 0
|
|
fi
|
|
|
|
EXTRA_ARGS=()
|
|
if [ $TEST_ONLY = 1 ]; then
|
|
EXTRA_ARGS+=('--check')
|
|
fi
|
|
|
|
"$BLACK" "${EXTRA_ARGS[@]}" "${FILES[@]}"
|