naett.c

Tiny cross-platform HTTP / HTTPS client library in C.
git clone git://git.finwo.net/lib/naett.c
Log | Files | Refs | README | LICENSE

bundle.sh (803B)


      1 #!/usr/bin/env bash
      2 
      3 usage="Usage: $0 bundle.c amalgam.h"
      4 target=${1:?$usage}
      5 source=${2:?$usage}
      6 
      7 [[ -f $source ]] || (echo source missing && exit)
      8 
      9 declare -A seen
     10 
     11 cat /dev/null > "$target"
     12 
     13 bundle() {
     14     local file=$1
     15 
     16     [[ -z "${seen[$file]}" ]] || return 1
     17     seen[$file]=1
     18 
     19     echo "// Inlined $file: //" >> "$target"
     20     IFS=""
     21     while read -r line; do
     22         if [[ $line =~ ^\#include\ \"(.+)\" && -f ${BASH_REMATCH[1]} ]]; then
     23             include=${BASH_REMATCH[1]}
     24             if bundle $include; then
     25                 echo "$line" >> "$target"
     26             else
     27                 echo "//$line" >> "$target"
     28             fi
     29         else
     30             echo "$line" >> "$target"
     31         fi
     32     done < $file
     33     echo "// End of inlined $file //" >> "$target"
     34     return 0
     35 }
     36 
     37 bundle "$source"