49 lines
1.2 KiB
Bash
Executable file
49 lines
1.2 KiB
Bash
Executable file
#!/bin/sh
|
|
# Create all the different builds for listen
|
|
|
|
# verify we are at root of repository
|
|
if ! [ -d .git ]; then
|
|
echo build: this script must be run at the root of the repo
|
|
exit 1
|
|
fi
|
|
|
|
if uname | grep -qe Linux; then
|
|
os=linux
|
|
elif uname | grep -qe MINGW; then
|
|
os=windows
|
|
else
|
|
os=other
|
|
fi
|
|
|
|
build_go() {
|
|
go build -o out/$(go env GOOS)/listen .
|
|
}
|
|
|
|
build_docker() {
|
|
if [ $os = "windows" ]; then
|
|
/c/Program\ Files/Docker/Docker/DockerCli.exe -SwitchWindowsEngine
|
|
exe=C:/build/listen/listen.exe
|
|
else
|
|
exe=/usr/src/listen/listen
|
|
fi
|
|
|
|
if docker build -t listen-build -f docker/build.$os.Dockerfile .; then
|
|
mkdir -p out/$os
|
|
docker create --name listen-build-tmp listen-build
|
|
docker cp listen-build-tmp:$exe out/$os
|
|
docker rm listen-build-tmp
|
|
fi
|
|
}
|
|
|
|
# if an arg is specified, force building with the specified method
|
|
[ $1 ] && build_$1 && exit
|
|
|
|
# prefer building with local go install if it exists on path
|
|
if which go &> /dev/null; then
|
|
build_go; exit
|
|
# if windows or linux, try building with docker
|
|
elif echo $os | grep -e linux -e windows; then
|
|
which docker &> /dev/null && (build_docker; exit)
|
|
fi
|
|
|
|
echo could not find valid build method for OS && exit 2
|