mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-13 22:47:33 +08:00
optimize build script
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user