listen/build

50 lines
1.2 KiB
Text
Raw Normal View History

2025-06-29 13:47:56 -06:00
#!/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
2025-06-29 13:47:56 -06:00
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
2025-06-29 13:47:56 -06:00
else
exe=/usr/src/listen/listen
2025-06-29 13:47:56 -06:00
fi
if docker build -t listen-build -f docker/build.$os.Dockerfile .; then
mkdir -p out/$os
2025-06-29 15:05:18 -06:00
docker create --name listen-build-tmp listen-build
docker cp listen-build-tmp:$exe out/$os
2025-06-29 15:05:18 -06:00
docker rm listen-build-tmp
fi
2025-06-29 13:47:56 -06:00
}
# if an arg is specified, force building with the specified method
2025-06-29 15:45:10 -06:00
[ $1 ] && (build_$1; exit)
2025-06-29 13:47:56 -06:00
# 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
2025-06-29 15:45:10 -06:00
elif echo $os | grep -qe linux -e windows; then
which docker &> /dev/null && (build_docker; exit)
2025-06-29 13:47:56 -06:00
fi
echo could not find valid build method for OS && exit 2