71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
CLANG_FORMAT='deps/3rd/usr/local/oceanbase/devtools/bin/clang-format'
 | 
						|
EXCLUDE_FILES=('sql_parser_mysql_mode_lex.h' \
 | 
						|
                'sql_parser_mysql_mode_lex.c' \
 | 
						|
                'sql_parser_mysql_mode_tab.c' \
 | 
						|
                'ob_signal_worker.cpp' \
 | 
						|
                'ev.c' \
 | 
						|
		'sql_parser_oracle_mode_tab.c' \
 | 
						|
		'sql_parser_oracle_mode_tab.h' \
 | 
						|
		'sql_parser_oracle_mode_lex.c' \
 | 
						|
		'pl_parser_oracle_mode_tab.c')
 | 
						|
 | 
						|
function format_file()
 | 
						|
{
 | 
						|
    if_format=1
 | 
						|
    for exclude_file in ${EXCLUDE_FILES[@]}
 | 
						|
    do
 | 
						|
        if [[ "$1" = *"$exclude_file"* ]]; then
 | 
						|
            echo -e '\033[31mDo not format' $1 'because of configuration\033[0m\r'
 | 
						|
            if_format=0
 | 
						|
            break
 | 
						|
        fi
 | 
						|
    done
 | 
						|
    if [[ x"$if_format" = x"1" ]]; then
 | 
						|
        $CLANG_FORMAT -i -style=file $1
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
function format_folder()
 | 
						|
{
 | 
						|
 echo '--------------------------------------------------------------------------'
 | 
						|
 echo -e '\033[K\033[32mFormat files in the folder' $1 '\033[0m\r'
 | 
						|
 for file in `find $1 -name '*.cpp' -o -name '*.h' -o -name '*.ipp' -o -name '*.c'`  
 | 
						|
 do
 | 
						|
   echo -ne '\033[K\033[32mFormating' $file '\033[0m\r'
 | 
						|
   format_file $file
 | 
						|
 done
 | 
						|
#echo -e '\033[K\033[32mFormat files in the folder' $1 'successfully\033[0m\r'
 | 
						|
}
 | 
						|
 | 
						|
function format()
 | 
						|
{
 | 
						|
    if [ -z "$1" ]; then
 | 
						|
        echo 'please input a file, folder or all'
 | 
						|
    elif [[ x"$1" = x"all" ]]; then
 | 
						|
        format_folder deps/easy
 | 
						|
        format_folder deps/oblib
 | 
						|
        format_folder src
 | 
						|
        format_folder unittest
 | 
						|
        echo -e '\033[K\033[32mFormat successfully\033[0m'
 | 
						|
    elif [ -f "$1" ]; then
 | 
						|
        if [[ $1 = *.cpp* ]] || [[ $1 = *.c* ]] || [[ $1 = *.h* ]] || [[ $1 = *.ipp* ]]; then
 | 
						|
            echo -e '\033[K\033[32mFormating' $1 '\033[0m\r'
 | 
						|
	    format_file $1
 | 
						|
        else
 | 
						|
            echo "please input a cpp/h/c/ipp file"
 | 
						|
        fi
 | 
						|
    elif [ -d "$1" ]; then
 | 
						|
        format_folder $1
 | 
						|
    else
 | 
						|
        echo "input is illegal"
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
if [ ! -f "$CLANG_FORMAT" ]; then
 | 
						|
   echo "The clang-format binary is not exist, maybe you can use 'sh build.sh init' to solve it"
 | 
						|
   exit 8
 | 
						|
fi
 | 
						|
format $1
 |