110 lines
2.1 KiB
Bash
Executable file
110 lines
2.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
baseDir="$( cd "$(dirname "$0")" && pwd )"
|
|
cd "$baseDir"
|
|
|
|
COL_OFF="\033[00m"
|
|
COL_BOLD="\033[01;01m"
|
|
COL_RED="\033[31m"
|
|
|
|
destDirPart1="dist"
|
|
destDirPart2="jess"
|
|
|
|
function prep {
|
|
# output
|
|
output="cmd/jess"
|
|
# get version
|
|
version=$(grep "info.Set" cmd/main.go | cut -d'"' -f4)
|
|
# build versioned file name
|
|
filename="jess_v${version//./-}"
|
|
# platform
|
|
platform="${GOOS}_${GOARCH}"
|
|
if [[ $GOOS == "windows" ]]; then
|
|
filename="${filename}.exe"
|
|
output="${output}.exe"
|
|
fi
|
|
# build destination path
|
|
destPath=${destDirPart1}/${platform}/${destDirPart2}/$filename
|
|
}
|
|
|
|
function check {
|
|
prep
|
|
|
|
# check if file exists
|
|
if [[ -f $destPath ]]; then
|
|
echo "[jess] $platform $version already built"
|
|
else
|
|
echo -e "[jess] ${COL_BOLD}$platform $version${COL_OFF}"
|
|
fi
|
|
}
|
|
|
|
function build {
|
|
prep
|
|
|
|
# check if file exists
|
|
if [[ -f $destPath ]]; then
|
|
echo "[jess] $platform already built in version $version, skipping..."
|
|
return
|
|
fi
|
|
|
|
# build
|
|
./cmd/build
|
|
if [[ $? -ne 0 ]]; then
|
|
echo -e "\n${COL_BOLD}[jess] $platform: ${COL_RED}BUILD FAILED.${COL_OFF}"
|
|
exit 1
|
|
fi
|
|
mkdir -p $(dirname $destPath)
|
|
cp $output $destPath
|
|
echo -e "\n${COL_BOLD}[jess] $platform: successfully built.${COL_OFF}"
|
|
}
|
|
|
|
function check_all {
|
|
GOOS=linux GOARCH=amd64 check
|
|
GOOS=windows GOARCH=amd64 check
|
|
GOOS=darwin GOARCH=amd64 check
|
|
GOOS=linux GOARCH=arm64 check
|
|
GOOS=windows GOARCH=arm64 check
|
|
GOOS=darwin GOARCH=arm64 check
|
|
}
|
|
|
|
function build_all {
|
|
GOOS=linux GOARCH=amd64 build
|
|
GOOS=windows GOARCH=amd64 build
|
|
GOOS=darwin GOARCH=amd64 build
|
|
GOOS=linux GOARCH=arm64 build
|
|
GOOS=windows GOARCH=arm64 build
|
|
GOOS=darwin GOARCH=arm64 build
|
|
}
|
|
|
|
function build_os {
|
|
# build only for current OS
|
|
# set for script
|
|
GOOS=$(go env GOOS)
|
|
# architectures
|
|
GOARCH=amd64 build
|
|
}
|
|
|
|
case $1 in
|
|
"check" )
|
|
check_all
|
|
;;
|
|
"build" )
|
|
build_all
|
|
;;
|
|
"build-os" )
|
|
build_os
|
|
;;
|
|
* )
|
|
echo ""
|
|
echo "build list:"
|
|
echo ""
|
|
check_all
|
|
echo ""
|
|
read -p "press [Enter] to start building" x
|
|
echo ""
|
|
build_all
|
|
echo ""
|
|
echo "finished building."
|
|
echo ""
|
|
;;
|
|
esac
|