#!/bin/bash

# Created by hongbo.he@lnxall.com
# Application sources for new EMS
# 2025/09/05
#
SRCPKG_new_ems=y

new_ems_build() {
	local OLDDIR="${PWD}"
	local use_tdengine=0
	if srcpkg_enabled tdengine ; then
		use_tdengine=1
	fi
	local make_ret=0
	if srcpkg_enabled libdb_control ; then
		make -j${OJOBN:-8} CC=${LNX_CC} \
			CFLAGS="${LNX_CFLAGS} -I${LNXDESTPFX}/include -I${LNXDESTPFX}/include/lib60870 \
			-I${LNXDESTPFX}/include/modbus \
			-I${LNXDESTPFX}/include/dy_utils -I${LNXDESTPFX}/include/libdb_control/db_control \
			-Werror=implicit-function-declaration"\
			NON_OPENWRT_LED=1 EN_BMSER_LIB=1 EN_TDENGINE=${use_tdengine}
		make_ret=$?
	else
		make CC=${LNX_CC} \
			CFLAGS="${LNX_CFLAGS} -I${LNXDESTPFX}/include -I${LNXDESTPFX}/include/lib60870 \
			-I${LNXDESTPFX}/include/dy_utils -I${LNXDESTPFX}/include/modbus" \
			NON_OPENWRT_LED=1  EN_TDENGINE=${use_tdengine}
		make_ret=$?
	fi
	if [ $ret -eq 0 ]; then
		cd ${FTOPDIR}/package_repos/new_ems
		git checkout ./
		git clean -fd src
		cd -
	fi
	if [ $make_ret -ne 0 ]; then
		return 1
	fi

	cd "${OLDDIR}"
	local pkg_ver=$(version-lnxget "${IPKG_VERFILE}" 0.1.0)
	lnxbf_ipkg_init new_ems "${pkg_ver}"
	[ $? -ne 0 ] && return 2

	local LPKGDIR="ipkg-dir${LNX_PREFIX}"
	mkdir -p "${LPKGDIR}" "${LPKGDIR}/bin" "${LPKGDIR}/lib"
	cp -v -f build/bin/* "${LPKGDIR}/bin" && \
		cp -v -f build/lib/* "${LPKGDIR}/lib" && \
	[ $? -ne 0 ] && return 3

	if [ -f ./install.sh ] ; then
		FTPIDX=${FTPIDX} bash ./install.sh "${LPKGDIR}"
		[ $? -ne 0 ] && return 4
	fi
	lnxbf_ipkg_generate new_ems "${pkg_ver}"
	return $?
}

new_ems_clean() {
    make CC=${LNX_CC} CFLAGS="${LNX_CFLAGS}" LDFLAGS="${LNX_LDFLAGS}" clean
    rm -rf ipkg-dir && rm -rf -v "${FINSTALL_DIR}/packages"/new_ems*.ipk
    local build_dir="${LNXDESTPFX}/../../build_dir/new_ems"

    # 直接使用find处理所有文件
    if [[ -d "$build_dir" ]]; then
        find "$build_dir" -type f -print0 | while IFS= read -r -d '' file; do
            # 计算目标路径并删除文件
            target_file="${file/"$build_dir"/$LNXDESTPFX}"
            if [[ -e "$target_file" ]]; then
                rm -f "$target_file"
                # 记录父目录用于后续处理
                echo "$(dirname "$target_file")"
            fi
        done | sort -zu | while IFS= read -r -d '' dir; do
            # 从深到浅删除空目录
            find "$dir" -depth -type d -empty -delete 2>/dev/null
        done
    fi
    # 最后清理构建目录
    rm -rf "$build_dir"
	return $?
}


srcpkg_enabled new_ems && \
	register_source 'package_repos/new_ems/src' \
		lcore_dummy_config new_ems_build new_ems_clean
