#!/bin/sh SCRIPTPATH="$(dirname $(readlink -f "$0"))" cd "$SCRIPTPATH" makefile=" all: .cleansrc .cleansrc: src/* bash do.sh cleansrc src container/src touch .cleansrc " shopt -s expand_aliases alias pushd="pushd &>/dev/null" alias popd="popd &>/dev/null" if [ "$1" == "compose" ]; then # ensure container files are up to date make --file <(echo "$makefile") # forward commands to compose pushd container docker-compose ${@:2} popd elif [ "$1" == "cleansrc" ]; then if [ $# -lt 3 ]; then echo "USAGE: do.sh cleansrc " exit 0 fi # copy files src="$2" dst="$3" [ -e "$dst" ] && rm -rf "$dst" mkdir -p "$dst" cp -r "$src"/{*.c,*.h,Makefile,msgs} "$dst" # strip comments find "$dst" | while read path; do if [ -f "$path" ]; then if [ ! -z $(echo "$path" | grep '.[hc]$') ]; then sed -i -e 's/^\s*\/\*.*\*\/\s*$//g' "$path" # remove /* */ style comments sed -i -e 's/\s*\/\*.*\*\/\s*/ /g' "$path" # remove /* */ style comments sed -i -e 's/\/\/.*//g' "$path" # remove // style comments sed -i -e ':a;N;$!ba;s/\n\{3,\}/\n\n/g' "$path" # collapse multiple newlines sed -i -e 's/fprintf(\s*stderr\s*,\s*/printf(/g' "$path" # replace fprintf stderr elif [ "$(basename "$path")" == "Makefile" ]; then sed -i -e 's/\s*#.*//g' "$path" # remove # style comments sed -i -e ':a;N;$!ba;s/\n\{3,\}/\n\n/g' "$path" # collapse multiple newlines fi fi done elif [ "$1" == "test" ]; then SRCDIR="$PWD/src" DATADIR="$PWD/container/data" bash "tests/test.sh" ${@:2} elif [ "$1" == "make" ]; then # build a normal version cd src if [ -e ".safebuild" ]; then make clean rm ".safebuild" fi make elif [ "$1" == "make-safe" ]; then # build a 'safe' version with flagstore patches cd src make clean touch ".safebuild" for f in $(ls | grep '\.[ch]$'); do cp "$f" "safe_$f" done git apply patches/flagstore1.diff git apply patches/flagstore2.diff PREFIX="safe_" make rm safe_* else echo "USAGE: do.sh (compose) [args..]" echo "EXAMPLES:" echo " do.sh compose up --build # starts the docker container" echo " do.sh cleansrc # post-process source files for release" echo " do.sh make-safe # create patched version of binary" echo " do.sh test # run a test on the binary" fi