diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..c6a8b8ce401e703b3bf04ea1b53031f9c36be533 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +# Enable style checks on source files +*.h hooks.style=uncrustify +*.cpp hooks.style=uncrustify +*.hpp hooks.style=uncrustify diff --git a/scripts/init.sh b/scripts/init.sh new file mode 100755 index 0000000000000000000000000000000000000000..08398dbc16b26ec20c6c1fd4b5b26bae05e04cde --- /dev/null +++ b/scripts/init.sh @@ -0,0 +1,45 @@ +# Get script directory +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +DIR=$SCRIPT_DIR/.. +source $SCRIPT_DIR/base/download_file_with_cmake.sh + +### Init git hooks ### + +# Check for uncrustify +UNCRUSTIFY_LOCATION=`which uncrustify` +if [ -z "$UNCRUSTIFY_LOCATION" ]; then + if [ "$OSTYPE" == 'msys' ]; then + mkdir -vp ~/bin + export PATH=$PATH:~/bin + download_file http://sourceforge.net/projects/uncrustify/files/uncrustify/uncrustify-0.59/uncrustify-0.59-win32.zip/download ./uncrustify-0.59-win32.zip + 7za x uncrustify-0.59-win32.zip + mv uncrustify-0.59-win32/uncrustify.exe ~/bin + rm -r uncrustify-0.59-win32* + if [ ! -f ~/bin/uncrustify.exe ]; then + echo "Error downloading uncrustify! Git hooks not set." + else + UNCRUSTIFY_LOCATION=~/bin/uncrustify.exe + fi + else + echo "Please install uncrustify (http://uncrustify.sourceforge.net) to setup git hooks." + exit 1 + fi +fi + +cd $DIR +# Enable git hooks +# Does not work on Windows at the moment +if [ ! "$OSTYPE" == 'msys' ]; then + cd .git/hooks + git init + cd ../.. + git fetch origin + cd .git/hooks + git pull .. remotes/origin/hooks + cd $DIR + + # Set git configs for running uncrustify + git config --add --bool hooks.uncrustify true + git config hooks.uncrustify.path $UNCRUSTIFY_LOCATION + git config hooks.uncrustify.conf $SCRIPT_DIR/style/uncrustify.cfg +fi diff --git a/scripts/style/uncrustify.cfg b/scripts/style/uncrustify.cfg new file mode 100644 index 0000000000000000000000000000000000000000..394274a2d794d3f9b782ddd5c66e364f29eaee32 --- /dev/null +++ b/scripts/style/uncrustify.cfg @@ -0,0 +1,123 @@ +indent_align_string=false +indent_braces=false +indent_braces_no_func=false +indent_brace_parent=false +indent_namespace=false +indent_extern=false +indent_class=true +indent_class_colon=true +indent_else_if=false +indent_func_call_param=false +indent_func_def_param=false +indent_func_proto_param=false +indent_func_class_param=false +indent_func_ctor_var_param=false +indent_template_param=false +indent_func_param_double=false +indent_relative_single_line_comments=false +indent_col1_comment=false +indent_access_spec_body=false +indent_paren_nl=false +indent_comma_paren=false +indent_bool_paren=false +indent_square_nl=false +indent_preserve_sql=false +indent_align_assign=true +sp_balance_nested_parens=false +align_keep_tabs=false +align_with_tabs=false +align_on_tabstop=false +align_number_left=false +align_func_params=false +align_same_func_call_params=false +align_var_def_colon=false +align_var_def_attribute=false +align_var_def_inline=false +align_right_cmt_mix=false +align_on_operator=false +align_mix_var_proto=false +align_single_line_func=false +align_single_line_brace=false +align_nl_cont=false +align_left_shift=true +nl_collapse_empty_body=false +nl_assign_leave_one_liners=false +nl_class_leave_one_liners=true +nl_enum_leave_one_liners=true +nl_getset_leave_one_liners=true +nl_func_leave_one_liners=true +nl_if_leave_one_liners=false +nl_multi_line_cond=false +nl_multi_line_define=false +nl_before_case=false +nl_after_case=false +nl_after_return=false +nl_after_semicolon=true +nl_after_brace_open=false +nl_after_brace_open_cmt=false +nl_after_vbrace_open=false +nl_after_brace_close=false +nl_define_macro=false +nl_squeeze_ifdef=false +nl_ds_struct_enum_cmt=false +nl_ds_struct_enum_close_brace=false +nl_create_if_one_liner=false +nl_create_for_one_liner=false +nl_create_while_one_liner=false +ls_for_split_full=false +ls_func_split_full=true +nl_after_multiline_comment=false +eat_blanks_after_open_brace=true +eat_blanks_before_close_brace=true +mod_pawn_semicolon=false +mod_full_paren_if_bool=false +mod_remove_extra_semicolon=true +mod_sort_import=false +mod_sort_using=false +mod_sort_include=true +mod_move_case_break=false +mod_remove_empty_return=true +cmt_indent_multi=true +cmt_c_group=false +cmt_c_nl_start=false +cmt_c_nl_end=false +cmt_cpp_group=false +cmt_cpp_nl_start=false +cmt_cpp_nl_end=false +cmt_cpp_to_c=false +cmt_star_cont=false +cmt_multi_check_last=true +cmt_insert_before_preproc=false +pp_indent_at_level=false +pp_region_indent_code=false +pp_if_indent_code=false +pp_define_at_level=false +input_tab_size=4 +code_width=100 +nl_max=2 +mod_add_long_ifdef_else_comment=10 +indent_with_tabs=1 +sp_arith=add +sp_assign=add +sp_enum_assign=add +sp_bool=add +sp_compare=add +sp_before_ptr_star=remove +sp_after_ptr_star=add +nl_end_of_file=add +nl_struct_brace=add +nl_if_brace=add +nl_brace_else=add +nl_elseif_brace=add +nl_else_brace=add +nl_for_brace=add +nl_while_brace=add +nl_switch_brace=add +nl_namespace_brace=add +nl_class_brace=add +nl_fdef_brace=add +mod_full_brace_for=remove +mod_full_brace_if=remove +mod_full_brace_while=remove +mod_paren_on_return=remove +pp_indent=remove \ No newline at end of file