blob: 02f6a2fbe66129806e760aa07ff4feb5a4960933 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#!/bin/sh
REPOROOT="$(git rev-parse --show-toplevel)"
SCRIPTPATH="$(dirname $(readlink -f "$0"))"
cd "$SCRIPTPATH"
makefile="
all: service/.copyts
service/.copyts: src/*
bash do.sh cleansrc src service/src
touch service/.copyts
"
shopt -s expand_aliases
alias pushd="pushd &>/dev/null"
alias popd="popd &>/dev/null"
if [ "$1" == "compose" ]; then
# ensure built service files are up to date
make --file <(echo "$makefile")
# forward commands to compose
pushd service
docker-compose ${@:2}
popd
elif [ "$1" == "cleansrc" ]; then
if [ $# -lt 3 ]; then
echo "USAGE: do.sh cleansrc <SRC> <DST>"
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
# apply patches if requested
if [ ! -z "$PATCHED" ]; then
pushd "$dst"
git apply "$REPOROOT/src/patches/"*.diff
popd
fi
elif [ "$1" == "test" ]; then
SRCDIR="$PWD/src" DATADIR="$PWD/service/data" bash "tests/test.sh" ${@:2}
elif [ "$1" == "make" ]; then
make -C src
else
echo "USAGE: do.sh (compose|test|cleansrc) [args..]"
echo "EXAMPLES:"
echo " do.sh compose up --build # setup src and start the container"
echo " do.sh test stl-upload test.stl # test the upload of STL files"
echo " do.sh make # build local binary in src"
echo " do.sh cleansrc <src> <dst> # post-process source files for release"
echo " # if \$PATCHED is set, patches are applied"
fi
|