]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/tools/headerstyle.sh
Add a custom type for boolean stats too to ensure they're only sent as a single byte
[xonotic/xonotic-data.pk3dir.git] / qcsrc / tools / headerstyle.sh
1 #!/usr/bin/env bash
2 set -eu
3 cd ${0%/*}
4 cd ..
5
6 VERBOSE=${VERBOSE:-1}
7
8 function startswith() {
9     declare -l file="${1}"
10     declare -l prelude="${2}"
11     declare -l line=$(head -n1 "$file")
12     if [ "$line" != "$prelude" ]; then
13         echo "$prelude" | cat - "$file" > "$file.tmp" && mv "$file.tmp" "$file"
14     fi
15 }
16
17 function check() {
18     declare -l base="${1}"
19     find "$base" -type f -name '*.qc' -print0 | sort -z | while read -r -d '' file; do
20         [ "$VERBOSE" != "0" ] && echo "$file"
21         declare -l file_h="${file%.qc}.qh"
22         if [[ ! -f "$file_h" ]]; then echo "#pragma once" > "$file_h"; fi
23
24         include=$(basename "$file")
25         include="${include%.qc}.qh"
26         include="#include \"${include}\""
27         startswith "$file" "$include"
28     done
29     find "$base" -type f -name '*.qh' -a \! -name '_mod.qh' -print0 | sort -z | while read -r -d '' file; do
30         [ "$VERBOSE" != "0" ] && echo "$file"
31         startswith "$file" "#pragma once"
32     done
33 }
34
35 check client
36 check server
37 check menu
38 check common