#!/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 "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