server-configs-nginx/bin/inline.sh

97 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
################################################################################
#
# A utility script to write (nested) include statements
# into the equivalent single config file.
#
################################################################################
PROGNAME=${0##*/}
PROGDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
VERSION="0.1"
FILES=()
error_exit() {
echo -e "${PROGNAME}: ${1:-"Unknown Error"}" >&2
exit 1
}
graceful_exit() {
exit
}
usage() {
echo -e "Usage: $PROGNAME [-h|--help] file.conf"
}
help_message() {
cat <<- _EOF_
$PROGNAME ver. $VERSION
Replace include statements with the included files
The primary use of this script is for debugging nginx
config files, or to provide a single config file for
distribution/deployment.
$(usage)
Example:
cd /etc/nginx
$PROGNAME h5bp/basic.conf
### h5bp/basic.conf START
### h5bp/directive-only/x-ua-compatible.conf START
add_header "X-UA-Compatible" "IE=Edge";
....
Options:
-h, --help Display this help message and exit.
_EOF_
return
}
function main {
echo "### $1 START"
while read line
do
if [[ $line =~ "#" ]];
then
# skip comments
continue
elif [[ $line =~ "^ *$" ]];
then
# skip blank lines
continue
elif [[ $line =~ ^(\s*)include\s*(.*)\; ]];
then
main ${BASH_REMATCH[2]}
else
echo "$line"
fi
done < $1
echo "### $1 END"
}
# Parse command-line
while [[ -n $1 ]]; do
case $1 in
-h | --help)
help_message; graceful_exit ;;
-* | --*)
usage
error_exit "Unknown option $1" ;;
*)
FILES+=($1);;
esac
shift
done
if [ ${#FILES[@]} -eq 0 ];
then
usage;
graceful_exit;
fi
main $FILES