mirror of
https://github.com/irssi/irssi.git
synced 2024-11-03 04:27:19 -05:00
118 lines
2.2 KiB
Bash
Executable File
118 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eu
|
|
|
|
srcdir=$(dirname "$(readlink -f "$0")")
|
|
test -z "$srcdir" && srcdir=.
|
|
|
|
CLANG_FORMAT=${CLANG_FORMAT:-clang-format}
|
|
options=()
|
|
files=()
|
|
lines=()
|
|
inplace=0;xml=0;
|
|
filename=tmp.1.c
|
|
offsets=
|
|
off_opts=()
|
|
opts=$(getopt -n clang-format-xs -s bash -a -o in -l Werror,assume-filename:,cursor:,dry-run,dump-config,fallback-style:,ferror-limit:,help,length:,lines:,offset:,output-replacement-xmls,sort-includes,style:,verbose,version -- "$@")
|
|
if [ $? -ne 0 ]; then exit 1; fi
|
|
eval set -- "$opts"; unset opts
|
|
while :; do
|
|
case "$1" in
|
|
--offset)
|
|
offsets="$offsets${offsets:+ }$2"
|
|
off_opts+=("$1" "$2")
|
|
shift 2
|
|
continue
|
|
;;
|
|
--length)
|
|
offsets="$offsets:$2"
|
|
off_opts+=("$1" "$2")
|
|
shift 2
|
|
continue
|
|
;;
|
|
--assume-filename)
|
|
filename="$2"
|
|
options+=("$1" "$2")
|
|
shift 2
|
|
continue
|
|
;;
|
|
--lines)
|
|
lines+=("$2")
|
|
options+=("$1" "$2")
|
|
shift 2
|
|
continue
|
|
;;
|
|
--output-replacements-xml)
|
|
xml=1
|
|
shift
|
|
continue
|
|
;;
|
|
-i)
|
|
inplace=1
|
|
shift
|
|
continue
|
|
;;
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
*)
|
|
options+=("$1")
|
|
shift
|
|
continue
|
|
;;
|
|
esac
|
|
done
|
|
files=("$@")
|
|
|
|
export IN_LINES="${lines[*]}"
|
|
export OFFSETS="$offsets"
|
|
|
|
options_o=("${options[@]}")
|
|
if [[ $inplace = 1 ]]; then
|
|
options_o=("-i" "${options[@]}")
|
|
fi
|
|
if [[ $xml = 1 ]]; then
|
|
options_o=("-output-replacements-xml" "${options[@]}")
|
|
fi
|
|
options_o+=("${off_opts[@]}")
|
|
|
|
do_xs() {
|
|
perl "$srcdir"/format-xs-1.pl "$1" > "$1".1.c
|
|
$CLANG_FORMAT -i "${options[@]}" -- "$1".1.c
|
|
if [[ $xml = 1 ]]; then
|
|
perl "$srcdir"/format-xs-2.pl "$1".1.c > "$1".1.xs
|
|
perl "$srcdir"/format-xs-xml.pl <(diff -U0 <(od -An -tu1 -w1 -v "$1") <(od -An -tu1 -w1 -v "$1".1.xs))
|
|
rm "$1".1.xs
|
|
elif [[ $inplace = 1 ]]; then
|
|
perl "$srcdir"/format-xs-2.pl "$1".1.c > "$1"
|
|
else
|
|
perl "$srcdir"/format-xs-2.pl "$1".1.c
|
|
fi
|
|
rm "$1".1.c
|
|
}
|
|
|
|
if [[ ${#files[@]} -eq 0 ]]; then
|
|
case "$filename" in
|
|
*.xs)
|
|
cat > "$filename".1.xs
|
|
do_xs "$filename".1.xs
|
|
rm "$filename".1.xs
|
|
;;
|
|
*)
|
|
$CLANG_FORMAT "${options_o[@]}"
|
|
;;
|
|
esac
|
|
else
|
|
for file in "${files[@]}"; do
|
|
case "$file" in
|
|
*.xs)
|
|
do_xs "$file"
|
|
;;
|
|
*)
|
|
$CLANG_FORMAT "${options_o[@]}" -- "$file"
|
|
;;
|
|
esac
|
|
done
|
|
fi
|