42 lines
1.0 KiB
Bash
42 lines
1.0 KiB
Bash
#!/bin/bash
|
|
|
|
# (1) Check argument
|
|
#--------------------------------------------------------#
|
|
if [ "$#" -lt 1 -o ! -d "$1" ]; then
|
|
echo -e "\e[33mERROR\e[0m missing parameter\n"
|
|
echo -e "+ expected first argument to be the controller's folder"
|
|
exit 1;
|
|
fi
|
|
|
|
|
|
|
|
# (1) Get controller path #
|
|
BASE_DIR="`realpath $(pwd)`"
|
|
CTL_PATH="`realpath $1`";
|
|
|
|
# (2) List go files #
|
|
cd $CTL_PATH
|
|
GO_FILES="`ls *i.go **/*i.go 2>/dev/null`"
|
|
|
|
# (3) Create target directory in execution dir #
|
|
mkdir -p $BASE_DIR/controllers;
|
|
|
|
# (4) Build each file #
|
|
d=1
|
|
for file in $GO_FILES; do
|
|
ctl="${file%.*}" # remove extension from path
|
|
echo -e "($d) Building \e[33m$ctl\e[0m";
|
|
# build into execution dir
|
|
go build -buildmode=plugin -ldflags "-s -w" -o "$BASE_DIR/controllers/$ctl.so" ./$file;
|
|
|
|
# Manage failure
|
|
if [ "$?" -ne "0" ]; then
|
|
echo -e "\e[31m/!\\ \e[0merror building \e[33m$ctl\e[0m\n"
|
|
fi
|
|
|
|
d=""`expr $d + 1`""
|
|
done;
|
|
|
|
# (5) ACK #
|
|
echo -e "\n[ \e[32mfinished\e[0m ]\n"
|
|
echo -e "files are located inside the relative \e[33m./controllers\e[0m directory" |