diff --git a/build.sh b/build.sh index afaf7782..d7481d24 100755 --- a/build.sh +++ b/build.sh @@ -7,15 +7,13 @@ COMMIT_HASH="" BUILD_UNIXTIME="" echo_red() { - printf "\033[31m$1\033[0m\n" + printf '\033[31m%s\033[0m\n' "$1" } check_dependency() { for cmd in $1 do - which "$cmd" > /dev/null - - if [ $? != 0 ]; then + if ! which "$cmd" > /dev/null; then echo_red "Error: \"$cmd\" is required." exit 127 fi @@ -41,7 +39,7 @@ EOF } parse_args() { - if [ "$1" == "backend" ] || [ "$1" == "frontend" ] || [ "$1" == "docker" ]; then + if [ "$1" = "backend" ] || [ "$1" = "frontend" ] || [ "$1" = "docker" ]; then TYPE="$1" shift 1 fi @@ -67,7 +65,7 @@ parse_args() { } check_type_dependencies() { - if [ "$TYPE" == "" ]; then + if [ "$TYPE" = "" ]; then echo_red "No specified type" show_help exit 2 @@ -75,59 +73,59 @@ check_type_dependencies() { check_dependency "git" - if [ "$TYPE" == "backend" ]; then + if [ "$TYPE" = "backend" ]; then check_dependency "go" - elif [ "$TYPE" == "frontend" ]; then + elif [ "$TYPE" = "frontend" ]; then check_dependency "node npm" - elif [ "$TYPE" == "docker" ]; then + elif [ "$TYPE" = "docker" ]; then check_dependency "docker" fi } set_build_parameters() { - VERSION="`grep '"version": ' package.json | awk -F ':' '{print $2}' | tr -d ' ' | tr -d ',' | tr -d '"'`" + VERSION="$(grep '"version": ' package.json | awk -F ':' '{print $2}' | tr -d ' ' | tr -d ',' | tr -d '"')" COMMIT_HASH="$(git rev-parse --short HEAD)" BUILD_UNIXTIME="$(date '+%s')" } build_backend() { - local extra_arguments="-X github.com/mayswind/ezbookkeeping/pkg/version.Version=$VERSION" - extra_arguments="$extra_arguments -X github.com/mayswind/ezbookkeeping/pkg/version.CommitHash=$COMMIT_HASH" + backend_extra_arguments="-X github.com/mayswind/ezbookkeeping/pkg/version.Version=$VERSION" + backend_extra_arguments="$backend_extra_arguments -X github.com/mayswind/ezbookkeeping/pkg/version.CommitHash=$COMMIT_HASH" - if [ "$RELEASE" == "0" ]; then - extra_arguments="$extra_arguments -X github.com/mayswind/ezbookkeeping/pkg/version.BuildUnixTime=$BUILD_UNIXTIME" + if [ "$RELEASE" = "0" ]; then + backend_extra_arguments="$backend_extra_arguments -X github.com/mayswind/ezbookkeeping/pkg/version.BuildUnixTime=$BUILD_UNIXTIME" fi echo "Building backend binary file..." - CGO_ENABLED=1 go build -a -v -trimpath -ldflags "-w -s -linkmode external -extldflags '-static' $extra_arguments" -o ezbookkeeping ezbookkeeping.go + CGO_ENABLED=1 go build -a -v -trimpath -ldflags "-w -s -linkmode external -extldflags '-static' $backend_extra_arguments" -o ezbookkeeping ezbookkeeping.go chmod +x ezbookkeeping } build_frontend() { - local build_arguments="--"; + frontend_build_arguments="--"; - if [ "$RELEASE" == "0" ]; then - build_arguments="$build_arguments --buildUnixTime=$BUILD_UNIXTIME" + if [ "$RELEASE" = "0" ]; then + frontend_build_arguments="$frontend_build_arguments --buildUnixTime=$BUILD_UNIXTIME" fi echo "Pulling frontend dependencies..." npm install echo "Building frontend files..." - npm run build $build_arguments + npm run build "$frontend_build_arguments" } build_docker() { - local docker_tag="$VERSION" + docker_tag="$VERSION" - if [ "$RELEASE" == "0" ]; then + if [ "$RELEASE" = "0" ]; then docker_tag="SNAPSHOT-$(date '+%Y%m%d')"; fi echo "Building docker image \"ezbookkeeping:$docker_tag\"..." - docker build . -t ezbookkeeping:$docker_tag + docker build . -t "ezbookkeeping:$docker_tag" } main() { @@ -140,11 +138,11 @@ main() { check_type_dependencies "$TYPE" set_build_parameters - if [ "$TYPE" == "backend" ]; then + if [ "$TYPE" = "backend" ]; then build_backend - elif [ "$TYPE" == "frontend" ]; then + elif [ "$TYPE" = "frontend" ]; then build_frontend - elif [ "$TYPE" == "docker" ]; then + elif [ "$TYPE" = "docker" ]; then build_docker fi }