From e6b570488c1f185790141ab2acef674eb0c85d97 Mon Sep 17 00:00:00 2001 From: zhangsz Date: Wed, 5 Mar 2025 16:32:18 +0800 Subject: [PATCH] feat: build input features by case --- bin/build.sh | 79 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 74 insertions(+), 5 deletions(-) diff --git a/bin/build.sh b/bin/build.sh index a216879..d5dcad1 100755 --- a/bin/build.sh +++ b/bin/build.sh @@ -2,17 +2,84 @@ deb_build_dir=../debbuild src_pkg_root=../pkg -src_bin_dir=../../ocs/bin +src_ocs_dir=../../ocs +src_bin_dir=$src_ocs_dir/bin release_root=../release release_date=`date +%Y%m%d` +usage() { + echo "Usage: $0 [ocs|scp|ussdgw] [OPTION] " + echo + echo "Build OCS package, option as follow:" + echo " ocs|scp|ussdgw, ocs: OCS package build by dpkg" + echo " scp: SCP package build by dpkg" + echo " ussdgw: USSD Gateway package, build by rpmbuild" + echo + echo "OPTION:" + echo " -t [norfolk|cook|pncc|zed] Build binary tag" + echo " -h, --help Display this help and exit" + echo + exit 1 +} + +pkg_type="" +new_args=() +# Traverse all parameters +for arg in "$@"; do + if [[ "$arg" == "ocs" || "$arg" == "scp" || "$arg" == "ussdgw" ]]; then + pkg_type=$arg + else + new_args+=("$arg") # Add non pkg_type parameters to a new parameter list + fi +done + +if [ -z "$pkg_type" ]; then + usage + exit 1 +fi + +# Use a new parameter list +set -- "${new_args[@]}" + +while getopts "t:h" option; do + case $option in + t) + bin_tag=$OPTARG + ;; + h) + usage + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + usage + ;; + esac +done + +make_ocs_bin() +{ + cd $src_ocs_dir + echo -n "make clean ... " + make clean 1>/dev/null 2>&1 + echo "done" + echo -n "make $bin_tag ... " + make ${bin_tag} 1>make.log 2>&1 + if [ $? -ne 0 ]; then + echo "failed" + echo "Please refer to make.log for details" + exit 1 + fi + echo "done" + cd $OLDPWD +} + pre_common_build() { test -d $deb_build_dir || mkdir -p $deb_build_dir cd $deb_build_dir rm -rf * mkdir -p $deb_build_dir/DEBIAN - cd - + cd $OLDPWD } pre_ocs_build() @@ -46,10 +113,11 @@ pre_ussdgw_build() mkdir -p $deb_build_dir/lib/systemd/system } -case $1 in +case $pkg_type in ocs) pre_common_build pre_ocs_build + make_ocs_bin src_pkg_dir=$src_pkg_root/ocs release_dir=$release_root/ocs/amd64 @@ -68,6 +136,7 @@ case $1 in scp) pre_common_build pre_scp_build + make_ocs_bin src_pkg_dir=$src_pkg_root/scp release_dir=$release_root/scp/amd64 deb_file_name=scp-r2409.6-${release_date}-ub22.deb @@ -87,6 +156,7 @@ case $1 in ussdgw) pre_common_build pre_ussdgw_build + make_ocs_bin src_pkg_dir=$src_pkg_root/ussdgw release_dir=$release_root/ussdgw/amd64 deb_file_name=ussdgw-r2501.22-${release_date}-ub22.deb @@ -104,7 +174,6 @@ case $1 in fakeroot dpkg-deb --build $deb_build_dir $release_dir/$deb_file_name ;; *) - echo "Usage: $0 [ocs|scp|ussdgw]" - exit 1 + usage ;; esac \ No newline at end of file