#!/bin/sh

build_dir="${LNXDESTPFX}/../../build_dir"
packages_dir="${LNXDESTPFX}/../../packages"


update_mo(){
	# 多语言文件编译, 放在这里比较合适，每次编译proto_forward时都会更新
	PO_PATH=../translation
	po_files=`ls ${PO_PATH}/*.po`
    for po_file in "${po_files[@]}"
    do
        mo_file="${po_file%.*}.mo"
        msgfmt -o "$mo_file" "$po_file"
    done
	
	# 把文件名后缀去掉
	po_names=$(echo "$po_files" | sed 's/.*\///; s/\.po//')
	for po_name in $po_names; do
        LANGUAGE_DIR="$build_dir/proto_forward/app/global/language/$po_name/LC_MESSAGES"
		mkdir -p  $LANGUAGE_DIR
		cp -rvf ${PO_PATH}/${po_name}.mo $LANGUAGE_DIR/language.mo
	done
	rm -f ${PO_PATH}/*.mo
}


hw_copy_file() {
    echo "LNX_TARGET_DEV:$1"
    #
    case "$1" in
    iMX6ULL)
        cp ../config/hw_cfg/imx6ull/* "${LNXDESTPFX}/app/config/" -rfv
        ;;
    BAU-B30-003)
        cp ../config/hw_cfg/bau3.0/* "${LNXDESTPFX}/app/config/" -rfv
        ;;
    RK3568)
        ;;
    *) ;;
    esac
}


copy_file() {
    chmod a+x *.sh
    chmod a+x scripts/*
    chmod +x ./inits/*.sh

    # 制作升级应用拷贝
    mkdir -p "$build_dir"
    PROTO_DIR="$build_dir/proto_forward"
    GLOBAL_DIR="$build_dir/proto_forward/app/global"
    ALARM_DIR="$build_dir/proto_forward/app/global/alarminfo"
    LANGUAGE_DIR="$build_dir/proto_forward/app/global/language/$lang/LC_MESSAGES"
    
    rm -rf "$PROTO_DIR"

    mkdir -p "$PROTO_DIR/bin"
    mkdir -p "$PROTO_DIR/bin/inits"
    mkdir -p "$PROTO_DIR/platspec"
    mkdir -p "$GLOBAL_DIR/template"
    mkdir -p "$ALARM_DIR"

    cp proto_forward "$PROTO_DIR/bin" -rf
    cp em*d_startup.sh "$PROTO_DIR/bin" -rf
    cp ../files/*.service "$PROTO_DIR/platspec" -rf
    cp  ../cert "$PROTO_DIR/app/" -rf
    mv version.log $PROTO_DIR

    rsync -a --exclude='hw_cfg' ../config "$PROTO_DIR/app"
    rsync -a --exclude='.git' --exclude='.gitlab-ci.yml' ../template "$GLOBAL_DIR"
    sshpass -p lnxall123 scp -oConnectTimeout=5 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -q -r lnxall@192.168.22.227:/home/lnxall/ems_alarm/alarminfo/* "$ALARM_DIR"

    update_mo    

    # 初始化脚本
    rsync -a --exclude='__pycache__' ./scripts/* "$PROTO_DIR/bin"
    cp ./inits/* "$PROTO_DIR/bin/inits/" -rf
    chmod a+x $PROTO_DIR/bin/*


    # 与LNXALL_文件相关
    echo "install..."
    mkdir -p "$LNXDESTPFX"
    cp -rf  $PROTO_DIR/* $LNXDESTPFX 

    # 硬件相关的配置拷贝
    hw_copy_file $LNX_TARGET_DEV
    chmod a+x ${LNXDESTPFX}/bin/*
    return $?
}

creat_pack() {
    tmp_tar=".app_tmp.tar.bz2"
    if [ $# -lt 4 ]; then
        echo "par format error"
        echo "par format:creat_pack extract.sh app_dir board_name out_file"
        exit -1
    fi

    if [ ! -f "$1" ] || [ ! -f "$1" ]; then
        echo "$1 or $2 does not exist"
        exit -1
    fi

    echo "tar -cjvf $tmp_tar $2"
    tar -cjvf $tmp_tar -C $(dirname $2) $(basename $2) >>/dev/null
    echo "board_name $3"
    md5=$(md5sum -b "$tmp_tar" | awk '{print $1}')
    echo "cat $1"
    $(sed -e "2i\bin_md5=$md5\board_name=$3" $1 >$4)

    echo "cat $tmp_tar"
    $(cat $tmp_tar >>$4)

    echo "rm $tmp_tar"
    rm $tmp_tar

    echo "chmod a+x $4"
    $(chmod a+x $4)

    return $?
}

main() {
    # 更新翻译文件
    copy_file
    mkdir -p "$packages_dir"
    creat_pack ./extract.sh "$build_dir/proto_forward" $LNX_TARGET_DEV "$packages_dir/proto_forward.pkg"
    # mv version.log "$build_dir/proto_forward"
}

main
