argparser/build.sh
2023-05-17 10:17:56 +02:00

24 lines
1.3 KiB
Bash

#!/usr/bin/env bash
rm -rf header-build
mkdir -p header-build/headers
for header in src/*.h; do
grep -E '^#include <' "$header" >> "header-build/system-includes-1.h"
sed -e '/^#include </d' "$header" > "header-build/headers/$(basename "$header")"
done
sed -i '1s/^/\/*START*\/\n/' header-build/headers/_include_order.h
gcc -E -C -P "header-build/headers/_include_order.h" > header-build/combined-1.h
sed '0,/^\/\*START\*\/$/d' header-build/combined-1.h > header-build/combined-2.h
sort header-build/system-includes-1.h | uniq > header-build/system-includes-2.h
sed -r -e '/^namespace argparser \{/d' -e '/}\/\/ namespace argparser$/d' header-build/combined-2.h > header-build/combined-3.h
sed -r -e 's/^namespace argparser::(.*) \{/namespace \1 {/' -e 's/}\/\/ namespace argparser::(.*)$/}\/\/ namespace \1/' header-build/combined-3.h > header-build/combined-4.h
cat header-build/system-includes-2.h > header-build/combined.h
echo "namespace argparser {" >> header-build/combined.h
cat header-build/combined-4.h >> header-build/combined.h
echo "}// namespace argparser" >> header-build/combined.h
clang-tidy --fix-errors --quiet header-build/combined.h >/dev/null 2>&1
clang-format -i -style=file:.clang-format header-build/combined.h
mkdir -p dist/include/argparser
cp header-build/combined.h dist/include/argparser/argparser.h
rm -rf header-build