#!/bin/bash # This script expects that its first argument is the path prefix and the # remaining ones are file paths. It generates a C source code containing # the definition of the array of the 'FileToc' items. FileToc is a struct # with two strings. The first is the file path with path prefix removed, # and the second is the file contents as string. The last array element # is a sentinel (both strings are null). One of the Kythe applications # relies on this code (Kythe is the source code indexer: http://kythe.io/) set -eu declare prefix="$1" shift printf 'static const struct FileToc kPackedFiles[] = {\n' [[ "$prefix" =~ /\/$/ ]] || prefix="$prefix/" for hfile in "$@"; do printf '{"%s",\nR"filecontent(' "${hfile#$prefix}" cat "$hfile" printf ')filecontent"\n},\n' done printf '{nullptr, nullptr}};\n'