美文网首页
批量处理代码行比对生成报告html

批量处理代码行比对生成报告html

作者: Z岛主 | 来源:发表于2019-05-17 13:36 被阅读0次

    #1. 创建compare

    #2. 创建compare/old

    #3. compare/new

    #4. sh tree.sh ~/Desktop/compare

    #5. 生成 ~/Desktop/report

    #环境初始化

    function init()

    {

        echo "#########环境初始化#########################"

        WORK_DIR=$(cd $(dirname $0); pwd)

        #echo $WORK_DIR

        BasePath=$1

        BasePathLength=${#BasePath}

        #命令行是否/结尾问题

        FINAL=${BasePath:0-1}

        #echo "FINAL:"$FINAL

        #echo "BasePath...:"$BasePath

        if [ ${FINAL} == "/" ]; then

            #命令行是/结尾

            BasePath=${BasePath:0:$BasePathLength-1}

            #echo "BasePath......:"$BasePath

            BaseOldPath="$1old"

            BaseNewPath="$1new"

            echo "YES"

        else

            #命令行否/结尾

            BaseOldPath="$1/old"

            BaseNewPath="$1/new"

            echo "NO"

        fi

        BaseReportPath=$WORK_DIR/report

        #生成report目录

        if [ ! -d $BaseReportPath ]; then

            echo "新建目录"

            mkdir $BaseReportPath

        else

            echo "目录存在,重新生成"

            rm -rf $BaseReportPath

            mkdir $BaseReportPath

        fi

        #检查目录

        if [ -d $BaseReportPath ]; then

            echo "report目录创建成功"

        else

            echo "report目录创建失败,退出"

            exit

        fi

        BasePatchPath=$WORK_DIR/diff_to_html

        echo "强制写入比对配置文件"

        echo "text-report layout:side-by-side &

          options:display-all,line-numbers,display-context &

          output-to:%3 output-options:html-color %1 %2" > $BasePatchPath

        if [ -f $BasePatchPath ]; then

            echo "临时写入比对配置文件成功"

        else

            echo "临时写入比对配置文件失败,退出"

            exit

        fi

        BaseEmptyPath=$WORK_DIR/empty

        echo "" > $BaseEmptyPath

        echo "##########路径参数###########"

        echo "BasePath...............:$BasePath"

        echo "BaseOldPath............:$BaseOldPath"

        echo "BaseNewPath............:$BaseNewPath"

        echo "BaseReportPath.........:$BaseReportPath"

        echo "BasePatchPath..........:$BasePatchPath"

        echo "BaseEmptyPath..........:$BaseEmptyPath"

        echo "#####################"

        echo "#########环境初始化 ok############################"

    }

    #目录检查

    # BasePath...............:~/Desktop/compare

    # BaseOldPath............:~/Desktop/compare/old

    # BaseNewPath............:~/Desktop/compare/new

    function checkCompareDir(){

    echo "##############checkCompareDir start########################"

    if [ ! -d $BasePath ]; then

        echo $BasePath"目录不存在,请检查!"

        exit 0

    fi

    if [ ! -d $BaseOldPath ]; then

        echo $BaseOldPath"子目录不存在,请检查!"

        exit 0

    fi

    if [ ! -d $BaseNewPath ]; then

        echo $BaseNewPath"子目录不存在,请检查!"

        exit 0

    fi 

    echo "##############checkCompareDir end########################"

    }

    function listFiles()

    {

        #1st param, the dir name

        for file in `ls $1`;

        do

            #echo "path....:$1/$file"

                if [ -d "$1/$file" ]; then

                    # echo "$2$file"

                    # echo "$1/$file"

                    #递归

                    listFiles "$1/$file"

                else

                    #比较文件A

                    compareFileAPath=$1/$file

                    #echo "compareFileAPath..............:$compareFileAPath"

                    if [[ "${compareFileAPath}" =~ $BaseNewPath ]]; then

                        #echo "compareFileAPath is new"

                        compareFileBPath=$compareFileAPath

                        compareFileAPath=${compareFileBPath/$BaseNewPath/$BaseOldPath}

                        if [ ! -d $compareFileAPath ]; then

                            echo "A path不存在"

                            fulldir=$1

                            #临时html路径,compareFileAPath替换BaseOldPath赋值BaseReportPath

                            tempHtmlPath=${compareFileBPath/$BaseNewPath/$BaseReportPath}

                            # echo "tempHtmlPath....................:$tempHtmlPath"

                            #html文件路径,tempHtmlPath拼接.html

                            htmlPath=$tempHtmlPath.html

                            # echo "htmlPath......................:$htmlPath"

                            #替换生成Html文件对应的目录

                            htmldir=${fulldir/$BaseNewPath/$BaseReportPath}

                            #echo "htmldir......................:$htmldir"

                            #如果Html文件夹不存在,创建对应文件夹

                            if [ ! -d $htmldir ]; then

                                #echo "create.....:$htmldir"

                                mkdir $htmldir

                            fi

                        fi

                    else

                        echo "#old############"

                        fulldir=$1

                        # echo "fulldir..............:$fulldir"

                        #比较文件B,compareFileAPath替换BaseOldPath赋值BaseNewPath

                        compareFileBPath=${compareFileAPath/$BaseOldPath/$BaseNewPath}

                        # echo "compareFileBPath..............:$compareFileBPath"

                        #临时html路径,compareFileAPath替换BaseOldPath赋值BaseReportPath

                        tempHtmlPath=${compareFileBPath/$BaseNewPath/$BaseReportPath}

                        # echo "tempHtmlPath....................:$tempHtmlPath"

                        #html文件路径,tempHtmlPath拼接.html

                        htmlPath=$tempHtmlPath.html

                        # echo "htmlPath......................:$htmlPath"

                        #替换生成Html文件对应的目录

                        htmldir=${fulldir/$BaseNewPath/$BaseReportPath}

                        # echo "htmldir......................:$htmldir"

                        #如果Html文件夹不存在,创建对应文件夹

                        if [ ! -d $htmldir ]; then

                            echo "create.....:$htmldir"

                            mkdir $htmldir

                        fi

                    fi

                    echo "#################file compare start#####################"

                    if [ -f $compareFileBPath ]; then

                        #echo "compare aciton...B存在:$compareFileBPath"

                            if [ ! -f $compareFileAPath ]; then

                                echo "#################NEW#####################"

                                bcompare -silent @$BasePatchPath $BaseEmptyPath $compareFileBPath $htmlPath

                            else 

                                #A存在

                                echo "#################UPDATE#####################"

                                #echo "compare aciton...$compareFileAPath"

                                # echo "compareFileAPath.......:$compareFileAPath"

                                # echo "compareFileBPath.......:$compareFileBPath"

                                if [[ "${compareFileAPath}" =~ $BaseOldPath ]]; then

                                    bcompare -silent @$BasePatchPath $compareFileAPath $compareFileBPath $htmlPath

                                fi

                            fi

                    fi

                    echo "###################file compare end#########################"

                fi

        done

    }

    #清理函数

    function clear(){

        #echo "删除比对配置文件"

        rm -rf $BasePatchPath

        rm -rf $BaseEmptyPath

    }

    #######main run

    #参数检查函数,需要提供工作目录

    if [ $# != 1 ] ; then

    echo "**********************************************************"

    echo ""

    echo " 使用方法:"

    echo "  1. 需要bcompare命令行工具可用"

    echo "  1. 创建compare目录"

    echo "  2. 创建compare/old子目录"

    echo "  3. 创建compare/new子目录"

    echo "  4. sh tree.sh ~/Desktop/compare"

    echo "  5. 生成 ~/Desktop/report"

    echo ""

    echo "***********************************************************"

    exit 1;

    fi

    #初始化

    init $1

    #目录检查

    checkCompareDir

    #递归生成

    listFiles $BasePath

    #清理帮助文件

    clear

    cp -rf ~/Desktop/report ~/Desktop/compare

    相关文章

      网友评论

          本文标题:批量处理代码行比对生成报告html

          本文链接:https://www.haomeiwen.com/subject/dzvnaqtx.html