diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7ecfe82 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,1759 @@ +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = false +max_line_length = 150 +tab_width = 2 +trim_trailing_whitespace = true +ij_continuation_indent_size = 4 +ij_formatter_off_tag = @formatter:off +ij_formatter_on_tag = @formatter:on +ij_formatter_tags_enabled = true +ij_smart_tabs = false +ij_wrap_on_typing = false + +[*.conf] +ij_continuation_indent_size = 2 +ij_hocon_keep_blank_lines_before_right_brace = 2 +ij_hocon_keep_indents_on_empty_lines = false +ij_hocon_keep_line_breaks = true +ij_hocon_space_after_colon = true +ij_hocon_space_after_comma = true +ij_hocon_space_before_colon = true +ij_hocon_space_before_comma = false +ij_hocon_spaces_within_braces = false +ij_hocon_spaces_within_brackets = false +ij_hocon_spaces_within_method_call_parentheses = false + +[*.css] +ij_css_align_closing_brace_with_properties = false +ij_css_blank_lines_around_nested_selector = 1 +ij_css_blank_lines_between_blocks = 1 +ij_css_brace_placement = 0 +ij_css_enforce_quotes_on_format = false +ij_css_hex_color_long_format = false +ij_css_hex_color_lower_case = false +ij_css_hex_color_short_format = false +ij_css_hex_color_upper_case = false +ij_css_keep_blank_lines_in_code = 2 +ij_css_keep_indents_on_empty_lines = false +ij_css_keep_single_line_blocks = false +ij_css_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow +ij_css_space_after_colon = true +ij_css_space_before_opening_brace = true +ij_css_use_double_quotes = true +ij_css_value_alignment = 0 + +[*.feature] +tab_width = 4 +ij_continuation_indent_size = 8 +ij_gherkin_keep_indents_on_empty_lines = false + +[*.gsp] +indent_size = 4 +tab_width = 4 +ij_continuation_indent_size = 8 +ij_gsp_keep_indents_on_empty_lines = false + +[*.haml] +tab_width = 4 +ij_continuation_indent_size = 8 +ij_haml_keep_indents_on_empty_lines = false + +[*.java] +ij_java_align_consecutive_assignments = false +ij_java_align_consecutive_variable_declarations = false +ij_java_align_group_field_declarations = false +ij_java_align_multiline_annotation_parameters = false +ij_java_align_multiline_array_initializer_expression = false +ij_java_align_multiline_assignment = false +ij_java_align_multiline_binary_operation = false +ij_java_align_multiline_chained_methods = false +ij_java_align_multiline_extends_list = false +ij_java_align_multiline_for = false +ij_java_align_multiline_method_parentheses = false +ij_java_align_multiline_parameters = false +ij_java_align_multiline_parameters_in_calls = false +ij_java_align_multiline_parenthesized_expression = false +ij_java_align_multiline_resources = false +ij_java_align_multiline_ternary_operation = false +ij_java_align_multiline_text_blocks = false +ij_java_align_multiline_throws_list = false +ij_java_align_subsequent_simple_methods = false +ij_java_align_throws_keyword = false +ij_java_annotation_parameter_wrap = off +ij_java_array_initializer_new_line_after_left_brace = false +ij_java_array_initializer_right_brace_on_new_line = false +ij_java_array_initializer_wrap = normal +ij_java_assert_statement_colon_on_next_line = false +ij_java_assert_statement_wrap = off +ij_java_assignment_wrap = off +ij_java_binary_operation_sign_on_next_line = true +ij_java_binary_operation_wrap = normal +ij_java_blank_lines_after_anonymous_class_header = 0 +ij_java_blank_lines_after_class_header = 1 +ij_java_blank_lines_after_imports = 1 +ij_java_blank_lines_after_package = 1 +ij_java_blank_lines_around_class = 1 +ij_java_blank_lines_around_field = 0 +ij_java_blank_lines_around_field_in_interface = 0 +ij_java_blank_lines_around_initializer = 1 +ij_java_blank_lines_around_method = 1 +ij_java_blank_lines_around_method_in_interface = 1 +ij_java_blank_lines_before_class_end = 0 +ij_java_blank_lines_before_imports = 1 +ij_java_blank_lines_before_method_body = 0 +ij_java_blank_lines_before_package = 0 +ij_java_block_brace_style = end_of_line +ij_java_block_comment_at_first_column = true +ij_java_call_parameters_new_line_after_left_paren = false +ij_java_call_parameters_right_paren_on_new_line = false +ij_java_call_parameters_wrap = normal +ij_java_case_statement_on_separate_line = true +ij_java_catch_on_new_line = false +ij_java_class_annotation_wrap = split_into_lines +ij_java_class_brace_style = end_of_line +ij_java_class_count_to_use_import_on_demand = 999 +ij_java_class_names_in_javadoc = 1 +ij_java_do_not_indent_top_level_class_members = false +ij_java_do_not_wrap_after_single_annotation = false +ij_java_do_while_brace_force = always +ij_java_doc_add_blank_line_after_description = true +ij_java_doc_add_blank_line_after_param_comments = false +ij_java_doc_add_blank_line_after_return = false +ij_java_doc_add_p_tag_on_empty_lines = true +ij_java_doc_align_exception_comments = true +ij_java_doc_align_param_comments = true +ij_java_doc_do_not_wrap_if_one_line = false +ij_java_doc_enable_formatting = true +ij_java_doc_enable_leading_asterisks = true +ij_java_doc_indent_on_continuation = false +ij_java_doc_keep_empty_lines = true +ij_java_doc_keep_empty_parameter_tag = true +ij_java_doc_keep_empty_return_tag = true +ij_java_doc_keep_empty_throws_tag = true +ij_java_doc_keep_invalid_tags = true +ij_java_doc_param_description_on_new_line = false +ij_java_doc_preserve_line_breaks = false +ij_java_doc_use_throws_not_exception_tag = true +ij_java_else_on_new_line = false +ij_java_entity_dd_suffix = EJB +ij_java_entity_eb_suffix = Bean +ij_java_entity_hi_suffix = Home +ij_java_entity_lhi_prefix = Local +ij_java_entity_lhi_suffix = Home +ij_java_entity_li_prefix = Local +ij_java_entity_pk_class = java.lang.String +ij_java_entity_vo_suffix = VO +ij_java_enum_constants_wrap = off +ij_java_extends_keyword_wrap = off +ij_java_extends_list_wrap = normal +ij_java_field_annotation_wrap = split_into_lines +ij_java_finally_on_new_line = false +ij_java_for_brace_force = always +ij_java_for_statement_new_line_after_left_paren = false +ij_java_for_statement_right_paren_on_new_line = false +ij_java_for_statement_wrap = normal +ij_java_generate_final_locals = false +ij_java_generate_final_parameters = false +ij_java_if_brace_force = always +ij_java_imports_layout = $*,|,* +ij_java_indent_case_from_switch = true +ij_java_insert_inner_class_imports = true +ij_java_insert_override_annotation = true +ij_java_keep_blank_lines_before_right_brace = 2 +ij_java_keep_blank_lines_between_package_declaration_and_header = 2 +ij_java_keep_blank_lines_in_code = 1 +ij_java_keep_blank_lines_in_declarations = 2 +ij_java_keep_control_statement_in_one_line = false +ij_java_keep_first_column_comment = true +ij_java_keep_indents_on_empty_lines = false +ij_java_keep_line_breaks = true +ij_java_keep_multiple_expressions_in_one_line = false +ij_java_keep_simple_blocks_in_one_line = false +ij_java_keep_simple_classes_in_one_line = false +ij_java_keep_simple_lambdas_in_one_line = false +ij_java_keep_simple_methods_in_one_line = false +ij_java_label_indent_absolute = false +ij_java_label_indent_size = 0 +ij_java_lambda_brace_style = end_of_line +ij_java_layout_static_imports_separately = true +ij_java_line_comment_add_space = false +ij_java_line_comment_at_first_column = true +ij_java_message_dd_suffix = EJB +ij_java_message_eb_suffix = Bean +ij_java_method_annotation_wrap = split_into_lines +ij_java_method_brace_style = end_of_line +ij_java_method_call_chain_wrap = normal +ij_java_method_parameters_new_line_after_left_paren = false +ij_java_method_parameters_right_paren_on_new_line = false +ij_java_method_parameters_wrap = normal +ij_java_modifier_list_wrap = false +ij_java_names_count_to_use_import_on_demand = 999 +ij_java_parameter_annotation_wrap = off +ij_java_parentheses_expression_new_line_after_left_paren = false +ij_java_parentheses_expression_right_paren_on_new_line = false +ij_java_place_assignment_sign_on_next_line = false +ij_java_prefer_longer_names = true +ij_java_prefer_parameters_wrap = false +ij_java_repeat_synchronized = true +ij_java_replace_instanceof_and_cast = false +ij_java_replace_null_check = true +ij_java_replace_sum_lambda_with_method_ref = true +ij_java_resource_list_new_line_after_left_paren = false +ij_java_resource_list_right_paren_on_new_line = false +ij_java_resource_list_wrap = off +ij_java_session_dd_suffix = EJB +ij_java_session_eb_suffix = Bean +ij_java_session_hi_suffix = Home +ij_java_session_lhi_prefix = Local +ij_java_session_lhi_suffix = Home +ij_java_session_li_prefix = Local +ij_java_session_si_suffix = Service +ij_java_space_after_closing_angle_bracket_in_type_argument = false +ij_java_space_after_colon = true +ij_java_space_after_comma = true +ij_java_space_after_comma_in_type_arguments = true +ij_java_space_after_for_semicolon = true +ij_java_space_after_quest = true +ij_java_space_after_type_cast = true +ij_java_space_before_annotation_array_initializer_left_brace = false +ij_java_space_before_annotation_parameter_list = false +ij_java_space_before_array_initializer_left_brace = false +ij_java_space_before_catch_keyword = true +ij_java_space_before_catch_left_brace = true +ij_java_space_before_catch_parentheses = true +ij_java_space_before_class_left_brace = true +ij_java_space_before_colon = true +ij_java_space_before_colon_in_foreach = true +ij_java_space_before_comma = false +ij_java_space_before_do_left_brace = true +ij_java_space_before_else_keyword = true +ij_java_space_before_else_left_brace = true +ij_java_space_before_finally_keyword = true +ij_java_space_before_finally_left_brace = true +ij_java_space_before_for_left_brace = true +ij_java_space_before_for_parentheses = true +ij_java_space_before_for_semicolon = false +ij_java_space_before_if_left_brace = true +ij_java_space_before_if_parentheses = true +ij_java_space_before_method_call_parentheses = false +ij_java_space_before_method_left_brace = true +ij_java_space_before_method_parentheses = false +ij_java_space_before_opening_angle_bracket_in_type_parameter = false +ij_java_space_before_quest = true +ij_java_space_before_switch_left_brace = true +ij_java_space_before_switch_parentheses = true +ij_java_space_before_synchronized_left_brace = true +ij_java_space_before_synchronized_parentheses = true +ij_java_space_before_try_left_brace = true +ij_java_space_before_try_parentheses = true +ij_java_space_before_type_parameter_list = false +ij_java_space_before_while_keyword = true +ij_java_space_before_while_left_brace = true +ij_java_space_before_while_parentheses = true +ij_java_space_inside_one_line_enum_braces = false +ij_java_space_within_empty_array_initializer_braces = false +ij_java_space_within_empty_method_call_parentheses = false +ij_java_space_within_empty_method_parentheses = false +ij_java_spaces_around_additive_operators = true +ij_java_spaces_around_assignment_operators = true +ij_java_spaces_around_bitwise_operators = true +ij_java_spaces_around_equality_operators = true +ij_java_spaces_around_lambda_arrow = true +ij_java_spaces_around_logical_operators = true +ij_java_spaces_around_method_ref_dbl_colon = false +ij_java_spaces_around_multiplicative_operators = true +ij_java_spaces_around_relational_operators = true +ij_java_spaces_around_shift_operators = true +ij_java_spaces_around_type_bounds_in_type_parameters = true +ij_java_spaces_around_unary_operator = false +ij_java_spaces_within_angle_brackets = false +ij_java_spaces_within_annotation_parentheses = false +ij_java_spaces_within_array_initializer_braces = false +ij_java_spaces_within_braces = false +ij_java_spaces_within_brackets = false +ij_java_spaces_within_cast_parentheses = false +ij_java_spaces_within_catch_parentheses = false +ij_java_spaces_within_for_parentheses = false +ij_java_spaces_within_if_parentheses = false +ij_java_spaces_within_method_call_parentheses = false +ij_java_spaces_within_method_parentheses = false +ij_java_spaces_within_parentheses = false +ij_java_spaces_within_switch_parentheses = false +ij_java_spaces_within_synchronized_parentheses = false +ij_java_spaces_within_try_parentheses = false +ij_java_spaces_within_while_parentheses = false +ij_java_special_else_if_treatment = true +ij_java_subclass_name_suffix = Impl +ij_java_ternary_operation_signs_on_next_line = true +ij_java_ternary_operation_wrap = normal +ij_java_test_name_suffix = Test +ij_java_throws_keyword_wrap = normal +ij_java_throws_list_wrap = off +ij_java_use_external_annotations = false +ij_java_use_fq_class_names = false +ij_java_use_relative_indents = false +ij_java_use_single_class_imports = true +ij_java_variable_annotation_wrap = off +ij_java_visibility = public +ij_java_while_brace_force = always +ij_java_while_on_new_line = false +ij_java_wrap_comments = true +ij_java_wrap_first_method_in_call_chain = false +ij_java_wrap_long_lines = false + +[*.less] +tab_width = 4 +ij_continuation_indent_size = 8 +ij_less_align_closing_brace_with_properties = false +ij_less_blank_lines_around_nested_selector = 1 +ij_less_blank_lines_between_blocks = 1 +ij_less_brace_placement = 0 +ij_less_enforce_quotes_on_format = false +ij_less_hex_color_long_format = false +ij_less_hex_color_lower_case = false +ij_less_hex_color_short_format = false +ij_less_hex_color_upper_case = false +ij_less_keep_blank_lines_in_code = 2 +ij_less_keep_indents_on_empty_lines = false +ij_less_keep_single_line_blocks = false +ij_less_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow +ij_less_space_after_colon = true +ij_less_space_before_opening_brace = true +ij_less_use_double_quotes = true +ij_less_value_alignment = 0 + +[*.pm] +indent_size = 4 +tab_width = 4 +ij_perl5_align_attributes = false +ij_perl5_align_comments_on_consequent_lines = true +ij_perl5_align_consecutive_assignments = 0 +ij_perl5_align_fat_comma = true +ij_perl5_align_multiline_array_initializer_expression = false +ij_perl5_align_multiline_binary_operation = false +ij_perl5_align_multiline_chained_methods = false +ij_perl5_align_multiline_parameters = true +ij_perl5_align_multiline_parameters_in_calls = false +ij_perl5_align_multiline_ternary_operation = false +ij_perl5_align_qw_elements = false +ij_perl5_align_variable_declarations = false +ij_perl5_array_initializer_wrap = off +ij_perl5_assignment_wrap = off +ij_perl5_attributes_wrap = 0 +ij_perl5_binary_operation_sign_on_next_line = false +ij_perl5_binary_operation_wrap = off +ij_perl5_brace_style_compound = 0 +ij_perl5_brace_style_namespace = 0 +ij_perl5_brace_style_sub = 0 +ij_perl5_call_parameters_wrap = off +ij_perl5_else_on_new_line = true +ij_perl5_keep_indents_on_empty_lines = false +ij_perl5_main_format = 0 +ij_perl5_method_call_chain_wrap = off +ij_perl5_method_parameters_wrap = off +ij_perl5_optional_dereference = 0 +ij_perl5_optional_dereference_hashref_element = 0 +ij_perl5_optional_dereference_simple = 0 +ij_perl5_optional_parentheses = 0 +ij_perl5_optional_quotes = 0 +ij_perl5_optional_quotes_hash_index = 0 +ij_perl5_optional_quotes_heredoc_opener = 0 +ij_perl5_place_assignment_sign_on_next_line = false +ij_perl5_qw_list_wrap = 0 +ij_perl5_space_after_colon = true +ij_perl5_space_after_comma = true +ij_perl5_space_after_for_semicolon = true +ij_perl5_space_after_quest = true +ij_perl5_space_after_variable_declaration_keyword = true +ij_perl5_space_before_attribute = true +ij_perl5_space_before_colon = true +ij_perl5_space_before_comma = false +ij_perl5_space_before_do_left_brace = true +ij_perl5_space_before_else_keyword = true +ij_perl5_space_before_for_semicolon = false +ij_perl5_space_before_if_left_brace = true +ij_perl5_space_before_if_parentheses = true +ij_perl5_space_before_method_parentheses = false +ij_perl5_space_before_quest = true +ij_perl5_space_within_empty_method_parentheses = false +ij_perl5_spaces_around_additive_operators = true +ij_perl5_spaces_around_assignment_operators = true +ij_perl5_spaces_around_bitwise_operators = true +ij_perl5_spaces_around_concat_operator = true +ij_perl5_spaces_around_equality_operators = true +ij_perl5_spaces_around_logical_operators = true +ij_perl5_spaces_around_multiplicative_operators = true +ij_perl5_spaces_around_range_operators = true +ij_perl5_spaces_around_relational_operators = true +ij_perl5_spaces_around_shift_operators = true +ij_perl5_spaces_around_unary_operator = false +ij_perl5_spaces_within_anon_array = true +ij_perl5_spaces_within_anon_hash = true +ij_perl5_spaces_within_braces = false +ij_perl5_spaces_within_if_parentheses = false +ij_perl5_spaces_within_method_call_parentheses = false +ij_perl5_spaces_within_method_parentheses = false +ij_perl5_spaces_within_parentheses = false +ij_perl5_spaces_within_qw_quotes = false +ij_perl5_ternary_operation_signs_on_next_line = false +ij_perl5_ternary_operation_wrap = off +ij_perl5_variable_declaration_wrap = 0 +ij_perl5_wrap_comments = false + +[*.sass] +ij_sass_align_closing_brace_with_properties = false +ij_sass_blank_lines_around_nested_selector = 1 +ij_sass_blank_lines_between_blocks = 1 +ij_sass_brace_placement = 0 +ij_sass_enforce_quotes_on_format = false +ij_sass_hex_color_long_format = false +ij_sass_hex_color_lower_case = false +ij_sass_hex_color_short_format = false +ij_sass_hex_color_upper_case = false +ij_sass_keep_blank_lines_in_code = 2 +ij_sass_keep_indents_on_empty_lines = false +ij_sass_keep_single_line_blocks = false +ij_sass_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow +ij_sass_space_after_colon = true +ij_sass_space_before_opening_brace = true +ij_sass_use_double_quotes = true +ij_sass_value_alignment = 0 + +[*.scss] +ij_scss_align_closing_brace_with_properties = false +ij_scss_blank_lines_around_nested_selector = 1 +ij_scss_blank_lines_between_blocks = 1 +ij_scss_brace_placement = 0 +ij_scss_enforce_quotes_on_format = false +ij_scss_hex_color_long_format = false +ij_scss_hex_color_lower_case = false +ij_scss_hex_color_short_format = false +ij_scss_hex_color_upper_case = false +ij_scss_keep_blank_lines_in_code = 2 +ij_scss_keep_indents_on_empty_lines = false +ij_scss_keep_single_line_blocks = false +ij_scss_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow +ij_scss_space_after_colon = true +ij_scss_space_before_opening_brace = true +ij_scss_use_double_quotes = true +ij_scss_value_alignment = 0 + +[*.styl] +tab_width = 4 +ij_continuation_indent_size = 8 +ij_stylus_align_closing_brace_with_properties = false +ij_stylus_blank_lines_around_nested_selector = 1 +ij_stylus_blank_lines_between_blocks = 1 +ij_stylus_brace_placement = 0 +ij_stylus_enforce_quotes_on_format = false +ij_stylus_hex_color_long_format = false +ij_stylus_hex_color_lower_case = false +ij_stylus_hex_color_short_format = false +ij_stylus_hex_color_upper_case = false +ij_stylus_keep_blank_lines_in_code = 2 +ij_stylus_keep_indents_on_empty_lines = false +ij_stylus_keep_single_line_blocks = false +ij_stylus_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow +ij_stylus_space_after_colon = true +ij_stylus_space_before_opening_brace = true +ij_stylus_use_double_quotes = true +ij_stylus_value_alignment = 0 + +[.editorconfig] +ij_editorconfig_align_group_field_declarations = false +ij_editorconfig_space_after_colon = false +ij_editorconfig_space_after_comma = true +ij_editorconfig_space_before_colon = false +ij_editorconfig_space_before_comma = false +ij_editorconfig_spaces_around_assignment_operators = true + +[{*.as,*.js2,*.es}] +indent_size = 4 +tab_width = 4 +ij_continuation_indent_size = 8 +ij_actionscript_align_imports = false +ij_actionscript_align_multiline_array_initializer_expression = false +ij_actionscript_align_multiline_binary_operation = false +ij_actionscript_align_multiline_chained_methods = false +ij_actionscript_align_multiline_extends_list = false +ij_actionscript_align_multiline_for = false +ij_actionscript_align_multiline_parameters = false +ij_actionscript_align_multiline_parameters_in_calls = false +ij_actionscript_align_multiline_ternary_operation = false +ij_actionscript_align_object_properties = 0 +ij_actionscript_align_union_types = false +ij_actionscript_align_var_statements = 0 +ij_actionscript_array_initializer_new_line_after_left_brace = false +ij_actionscript_array_initializer_right_brace_on_new_line = false +ij_actionscript_array_initializer_wrap = normal +ij_actionscript_assignment_wrap = off +ij_actionscript_binary_operation_sign_on_next_line = true +ij_actionscript_binary_operation_wrap = normal +ij_actionscript_blacklist_imports = rxjs/Rx,node_modules/**/*,@angular/material,@angular/material/typings/** +ij_actionscript_blank_lines_after_imports = 1 +ij_actionscript_blank_lines_after_package = 0 +ij_actionscript_blank_lines_around_function = 1 +ij_actionscript_blank_lines_around_method = 1 +ij_actionscript_blank_lines_before_imports = 1 +ij_actionscript_blank_lines_before_package = 0 +ij_actionscript_block_brace_style = end_of_line +ij_actionscript_call_parameters_new_line_after_left_paren = false +ij_actionscript_call_parameters_right_paren_on_new_line = false +ij_actionscript_call_parameters_wrap = normal +ij_actionscript_catch_on_new_line = false +ij_actionscript_chained_call_dot_on_new_line = true +ij_actionscript_class_brace_style = end_of_line +ij_actionscript_comma_on_new_line = false +ij_actionscript_do_while_brace_force = always +ij_actionscript_else_on_new_line = false +ij_actionscript_enforce_trailing_comma = keep +ij_actionscript_extends_keyword_wrap = off +ij_actionscript_extends_list_wrap = normal +ij_actionscript_field_prefix = _ +ij_actionscript_file_name_style = relaxed +ij_actionscript_finally_on_new_line = false +ij_actionscript_for_brace_force = always +ij_actionscript_for_statement_new_line_after_left_paren = false +ij_actionscript_for_statement_right_paren_on_new_line = false +ij_actionscript_for_statement_wrap = normal +ij_actionscript_force_quote_style = false +ij_actionscript_force_semicolon_style = false +ij_actionscript_function_expression_brace_style = end_of_line +ij_actionscript_if_brace_force = always +ij_actionscript_import_merge_members = global +ij_actionscript_import_prefer_absolute_path = global +ij_actionscript_import_sort_members = true +ij_actionscript_import_sort_module_name = false +ij_actionscript_import_use_node_resolution = true +ij_actionscript_imports_wrap = on_every_item +ij_actionscript_indent_case_from_switch = true +ij_actionscript_indent_chained_calls = true +ij_actionscript_indent_package_children = 0 +ij_actionscript_jsx_attribute_value = braces +ij_actionscript_keep_blank_lines_in_code = 1 +ij_actionscript_keep_first_column_comment = true +ij_actionscript_keep_indents_on_empty_lines = false +ij_actionscript_keep_line_breaks = true +ij_actionscript_keep_simple_blocks_in_one_line = false +ij_actionscript_keep_simple_methods_in_one_line = false +ij_actionscript_line_comment_at_first_column = true +ij_actionscript_method_brace_style = end_of_line +ij_actionscript_method_call_chain_wrap = off +ij_actionscript_method_parameters_new_line_after_left_paren = false +ij_actionscript_method_parameters_right_paren_on_new_line = false +ij_actionscript_method_parameters_wrap = normal +ij_actionscript_object_literal_wrap = on_every_item +ij_actionscript_parentheses_expression_new_line_after_left_paren = false +ij_actionscript_parentheses_expression_right_paren_on_new_line = false +ij_actionscript_place_assignment_sign_on_next_line = false +ij_actionscript_prefer_as_type_cast = false +ij_actionscript_prefer_parameters_wrap = false +ij_actionscript_reformat_c_style_comments = false +ij_actionscript_space_after_colon = true +ij_actionscript_space_after_comma = true +ij_actionscript_space_after_dots_in_rest_parameter = false +ij_actionscript_space_after_generator_mult = true +ij_actionscript_space_after_property_colon = true +ij_actionscript_space_after_quest = true +ij_actionscript_space_after_type_colon = false +ij_actionscript_space_after_unary_not = false +ij_actionscript_space_before_async_arrow_lparen = true +ij_actionscript_space_before_catch_keyword = true +ij_actionscript_space_before_catch_left_brace = true +ij_actionscript_space_before_catch_parentheses = true +ij_actionscript_space_before_class_lbrace = true +ij_actionscript_space_before_colon = true +ij_actionscript_space_before_comma = false +ij_actionscript_space_before_do_left_brace = true +ij_actionscript_space_before_else_keyword = true +ij_actionscript_space_before_else_left_brace = true +ij_actionscript_space_before_finally_keyword = true +ij_actionscript_space_before_finally_left_brace = true +ij_actionscript_space_before_for_left_brace = true +ij_actionscript_space_before_for_parentheses = true +ij_actionscript_space_before_for_semicolon = false +ij_actionscript_space_before_function_left_parenth = true +ij_actionscript_space_before_generator_mult = false +ij_actionscript_space_before_if_left_brace = true +ij_actionscript_space_before_if_parentheses = true +ij_actionscript_space_before_method_call_parentheses = false +ij_actionscript_space_before_method_left_brace = true +ij_actionscript_space_before_method_parentheses = false +ij_actionscript_space_before_property_colon = false +ij_actionscript_space_before_quest = true +ij_actionscript_space_before_switch_left_brace = true +ij_actionscript_space_before_switch_parentheses = true +ij_actionscript_space_before_try_left_brace = true +ij_actionscript_space_before_type_colon = false +ij_actionscript_space_before_unary_not = false +ij_actionscript_space_before_while_keyword = true +ij_actionscript_space_before_while_left_brace = true +ij_actionscript_space_before_while_parentheses = true +ij_actionscript_spaces_around_additive_operators = true +ij_actionscript_spaces_around_arrow_function_operator = true +ij_actionscript_spaces_around_assignment_operators = true +ij_actionscript_spaces_around_bitwise_operators = true +ij_actionscript_spaces_around_equality_operators = true +ij_actionscript_spaces_around_logical_operators = true +ij_actionscript_spaces_around_multiplicative_operators = true +ij_actionscript_spaces_around_relational_operators = true +ij_actionscript_spaces_around_shift_operators = true +ij_actionscript_spaces_around_unary_operator = false +ij_actionscript_spaces_within_array_initializer_brackets = false +ij_actionscript_spaces_within_brackets = false +ij_actionscript_spaces_within_catch_parentheses = false +ij_actionscript_spaces_within_for_parentheses = false +ij_actionscript_spaces_within_if_parentheses = false +ij_actionscript_spaces_within_imports = false +ij_actionscript_spaces_within_interpolation_expressions = false +ij_actionscript_spaces_within_method_call_parentheses = false +ij_actionscript_spaces_within_method_parentheses = false +ij_actionscript_spaces_within_object_literal_braces = false +ij_actionscript_spaces_within_object_type_braces = true +ij_actionscript_spaces_within_parentheses = false +ij_actionscript_spaces_within_switch_parentheses = false +ij_actionscript_spaces_within_type_assertion = false +ij_actionscript_spaces_within_union_types = true +ij_actionscript_spaces_within_while_parentheses = false +ij_actionscript_special_else_if_treatment = true +ij_actionscript_ternary_operation_signs_on_next_line = true +ij_actionscript_ternary_operation_wrap = normal +ij_actionscript_union_types_wrap = on_every_item +ij_actionscript_use_chained_calls_group_indents = false +ij_actionscript_use_double_quotes = true +ij_actionscript_use_explicit_js_extension = global +ij_actionscript_use_path_mapping = always +ij_actionscript_use_public_modifier = false +ij_actionscript_use_semicolon_after_statement = true +ij_actionscript_var_declaration_wrap = normal +ij_actionscript_while_brace_force = always +ij_actionscript_while_on_new_line = false +ij_actionscript_wrap_comments = false + +[{*.ats,*.ts}] +ij_typescript_align_imports = false +ij_typescript_align_multiline_array_initializer_expression = false +ij_typescript_align_multiline_binary_operation = false +ij_typescript_align_multiline_chained_methods = false +ij_typescript_align_multiline_extends_list = false +ij_typescript_align_multiline_for = true +ij_typescript_align_multiline_parameters = true +ij_typescript_align_multiline_parameters_in_calls = false +ij_typescript_align_multiline_ternary_operation = false +ij_typescript_align_object_properties = 0 +ij_typescript_align_union_types = false +ij_typescript_align_var_statements = 0 +ij_typescript_array_initializer_new_line_after_left_brace = false +ij_typescript_array_initializer_right_brace_on_new_line = false +ij_typescript_array_initializer_wrap = off +ij_typescript_assignment_wrap = off +ij_typescript_binary_operation_sign_on_next_line = false +ij_typescript_binary_operation_wrap = off +ij_typescript_blacklist_imports = rxjs/Rx,node_modules/**/*,@angular/material,@angular/material/typings/** +ij_typescript_blank_lines_after_imports = 1 +ij_typescript_blank_lines_around_class = 1 +ij_typescript_blank_lines_around_field = 0 +ij_typescript_blank_lines_around_field_in_interface = 0 +ij_typescript_blank_lines_around_function = 1 +ij_typescript_blank_lines_around_method = 1 +ij_typescript_blank_lines_around_method_in_interface = 1 +ij_typescript_block_brace_style = end_of_line +ij_typescript_call_parameters_new_line_after_left_paren = false +ij_typescript_call_parameters_right_paren_on_new_line = false +ij_typescript_call_parameters_wrap = off +ij_typescript_catch_on_new_line = false +ij_typescript_chained_call_dot_on_new_line = true +ij_typescript_class_brace_style = end_of_line +ij_typescript_comma_on_new_line = false +ij_typescript_do_while_brace_force = never +ij_typescript_else_on_new_line = false +ij_typescript_enforce_trailing_comma = keep +ij_typescript_extends_keyword_wrap = off +ij_typescript_extends_list_wrap = off +ij_typescript_field_prefix = _ +ij_typescript_file_name_style = relaxed +ij_typescript_finally_on_new_line = false +ij_typescript_for_brace_force = never +ij_typescript_for_statement_new_line_after_left_paren = false +ij_typescript_for_statement_right_paren_on_new_line = false +ij_typescript_for_statement_wrap = off +ij_typescript_force_quote_style = false +ij_typescript_force_semicolon_style = false +ij_typescript_function_expression_brace_style = end_of_line +ij_typescript_if_brace_force = never +ij_typescript_import_merge_members = global +ij_typescript_import_prefer_absolute_path = global +ij_typescript_import_sort_members = true +ij_typescript_import_sort_module_name = false +ij_typescript_import_use_node_resolution = true +ij_typescript_imports_wrap = on_every_item +ij_typescript_indent_case_from_switch = true +ij_typescript_indent_chained_calls = false +ij_typescript_indent_package_children = 0 +ij_typescript_jsdoc_include_types = false +ij_typescript_jsx_attribute_value = braces +ij_typescript_keep_blank_lines_in_code = 2 +ij_typescript_keep_first_column_comment = true +ij_typescript_keep_indents_on_empty_lines = false +ij_typescript_keep_line_breaks = true +ij_typescript_keep_simple_blocks_in_one_line = false +ij_typescript_keep_simple_methods_in_one_line = false +ij_typescript_line_comment_add_space = true +ij_typescript_line_comment_at_first_column = false +ij_typescript_method_brace_style = end_of_line +ij_typescript_method_call_chain_wrap = off +ij_typescript_method_parameters_new_line_after_left_paren = false +ij_typescript_method_parameters_right_paren_on_new_line = false +ij_typescript_method_parameters_wrap = off +ij_typescript_object_literal_wrap = on_every_item +ij_typescript_parentheses_expression_new_line_after_left_paren = false +ij_typescript_parentheses_expression_right_paren_on_new_line = false +ij_typescript_place_assignment_sign_on_next_line = false +ij_typescript_prefer_as_type_cast = false +ij_typescript_prefer_parameters_wrap = false +ij_typescript_reformat_c_style_comments = false +ij_typescript_space_after_colon = true +ij_typescript_space_after_comma = true +ij_typescript_space_after_dots_in_rest_parameter = false +ij_typescript_space_after_generator_mult = true +ij_typescript_space_after_property_colon = true +ij_typescript_space_after_quest = true +ij_typescript_space_after_type_colon = true +ij_typescript_space_after_unary_not = false +ij_typescript_space_before_async_arrow_lparen = true +ij_typescript_space_before_catch_keyword = true +ij_typescript_space_before_catch_left_brace = true +ij_typescript_space_before_catch_parentheses = true +ij_typescript_space_before_class_lbrace = true +ij_typescript_space_before_class_left_brace = true +ij_typescript_space_before_colon = true +ij_typescript_space_before_comma = false +ij_typescript_space_before_do_left_brace = true +ij_typescript_space_before_else_keyword = true +ij_typescript_space_before_else_left_brace = true +ij_typescript_space_before_finally_keyword = true +ij_typescript_space_before_finally_left_brace = true +ij_typescript_space_before_for_left_brace = true +ij_typescript_space_before_for_parentheses = true +ij_typescript_space_before_for_semicolon = false +ij_typescript_space_before_function_left_parenth = true +ij_typescript_space_before_generator_mult = false +ij_typescript_space_before_if_left_brace = true +ij_typescript_space_before_if_parentheses = true +ij_typescript_space_before_method_call_parentheses = false +ij_typescript_space_before_method_left_brace = true +ij_typescript_space_before_method_parentheses = false +ij_typescript_space_before_property_colon = false +ij_typescript_space_before_quest = true +ij_typescript_space_before_switch_left_brace = true +ij_typescript_space_before_switch_parentheses = true +ij_typescript_space_before_try_left_brace = true +ij_typescript_space_before_type_colon = false +ij_typescript_space_before_unary_not = false +ij_typescript_space_before_while_keyword = true +ij_typescript_space_before_while_left_brace = true +ij_typescript_space_before_while_parentheses = true +ij_typescript_spaces_around_additive_operators = true +ij_typescript_spaces_around_arrow_function_operator = true +ij_typescript_spaces_around_assignment_operators = true +ij_typescript_spaces_around_bitwise_operators = true +ij_typescript_spaces_around_equality_operators = true +ij_typescript_spaces_around_logical_operators = true +ij_typescript_spaces_around_multiplicative_operators = true +ij_typescript_spaces_around_relational_operators = true +ij_typescript_spaces_around_shift_operators = true +ij_typescript_spaces_around_unary_operator = false +ij_typescript_spaces_within_array_initializer_brackets = false +ij_typescript_spaces_within_brackets = false +ij_typescript_spaces_within_catch_parentheses = false +ij_typescript_spaces_within_for_parentheses = false +ij_typescript_spaces_within_if_parentheses = false +ij_typescript_spaces_within_imports = false +ij_typescript_spaces_within_interpolation_expressions = false +ij_typescript_spaces_within_method_call_parentheses = false +ij_typescript_spaces_within_method_parentheses = false +ij_typescript_spaces_within_object_literal_braces = false +ij_typescript_spaces_within_object_type_braces = true +ij_typescript_spaces_within_parentheses = false +ij_typescript_spaces_within_switch_parentheses = false +ij_typescript_spaces_within_type_assertion = false +ij_typescript_spaces_within_union_types = true +ij_typescript_spaces_within_while_parentheses = false +ij_typescript_special_else_if_treatment = true +ij_typescript_ternary_operation_signs_on_next_line = false +ij_typescript_ternary_operation_wrap = off +ij_typescript_union_types_wrap = on_every_item +ij_typescript_use_chained_calls_group_indents = false +ij_typescript_use_double_quotes = true +ij_typescript_use_explicit_js_extension = global +ij_typescript_use_path_mapping = always +ij_typescript_use_public_modifier = false +ij_typescript_use_semicolon_after_statement = true +ij_typescript_var_declaration_wrap = normal +ij_typescript_while_brace_force = never +ij_typescript_while_on_new_line = false +ij_typescript_wrap_comments = false + +[{*.cfml,*.cfm,*.cfc}] +indent_size = 4 +tab_width = 4 +ij_continuation_indent_size = 8 +ij_cfml_align_multiline_binary_operation = false +ij_cfml_align_multiline_for = true +ij_cfml_align_multiline_parameters = true +ij_cfml_align_multiline_parameters_in_calls = false +ij_cfml_align_multiline_ternary_operation = false +ij_cfml_assignment_wrap = off +ij_cfml_binary_operation_sign_on_next_line = false +ij_cfml_binary_operation_wrap = off +ij_cfml_block_brace_style = end_of_line +ij_cfml_call_parameters_new_line_after_left_paren = false +ij_cfml_call_parameters_right_paren_on_new_line = false +ij_cfml_call_parameters_wrap = off +ij_cfml_catch_on_new_line = false +ij_cfml_else_on_new_line = false +ij_cfml_for_statement_new_line_after_left_paren = false +ij_cfml_for_statement_right_paren_on_new_line = false +ij_cfml_for_statement_wrap = off +ij_cfml_keep_blank_lines_in_code = 2 +ij_cfml_keep_first_column_comment = true +ij_cfml_keep_indents_on_empty_lines = false +ij_cfml_keep_line_breaks = true +ij_cfml_method_brace_style = next_line +ij_cfml_method_parameters_new_line_after_left_paren = false +ij_cfml_method_parameters_right_paren_on_new_line = false +ij_cfml_method_parameters_wrap = off +ij_cfml_parentheses_expression_new_line_after_left_paren = false +ij_cfml_parentheses_expression_right_paren_on_new_line = false +ij_cfml_place_assignment_sign_on_next_line = false +ij_cfml_space_after_colon = true +ij_cfml_space_after_comma = true +ij_cfml_space_after_for_semicolon = true +ij_cfml_space_after_quest = true +ij_cfml_space_before_catch_keyword = true +ij_cfml_space_before_catch_left_brace = true +ij_cfml_space_before_catch_parentheses = true +ij_cfml_space_before_colon = true +ij_cfml_space_before_comma = false +ij_cfml_space_before_else_keyword = true +ij_cfml_space_before_else_left_brace = true +ij_cfml_space_before_for_left_brace = true +ij_cfml_space_before_for_parentheses = true +ij_cfml_space_before_for_semicolon = false +ij_cfml_space_before_if_left_brace = true +ij_cfml_space_before_if_parentheses = true +ij_cfml_space_before_method_call_parentheses = false +ij_cfml_space_before_method_left_brace = true +ij_cfml_space_before_method_parentheses = false +ij_cfml_space_before_quest = true +ij_cfml_space_before_switch_left_brace = true +ij_cfml_space_before_switch_parentheses = true +ij_cfml_space_before_try_left_brace = true +ij_cfml_space_before_while_keyword = true +ij_cfml_space_before_while_left_brace = true +ij_cfml_space_before_while_parentheses = true +ij_cfml_spaces_around_additive_operators = true +ij_cfml_spaces_around_assignment_operators = true +ij_cfml_spaces_around_equality_operators = true +ij_cfml_spaces_around_logical_operators = true +ij_cfml_spaces_around_multiplicative_operators = true +ij_cfml_spaces_around_relational_operators = true +ij_cfml_spaces_around_unary_operator = false +ij_cfml_spaces_within_catch_parentheses = false +ij_cfml_spaces_within_for_parentheses = false +ij_cfml_spaces_within_if_parentheses = false +ij_cfml_spaces_within_method_call_parentheses = false +ij_cfml_spaces_within_method_parentheses = false +ij_cfml_spaces_within_switch_parentheses = false +ij_cfml_spaces_within_while_parentheses = false +ij_cfml_special_else_if_treatment = false +ij_cfml_ternary_operation_signs_on_next_line = false +ij_cfml_ternary_operation_wrap = off +ij_cfml_while_on_new_line = false + +[{*.cjs,*.js}] +max_line_length = 80 +ij_javascript_align_imports = false +ij_javascript_align_multiline_array_initializer_expression = false +ij_javascript_align_multiline_binary_operation = false +ij_javascript_align_multiline_chained_methods = false +ij_javascript_align_multiline_extends_list = false +ij_javascript_align_multiline_for = false +ij_javascript_align_multiline_parameters = false +ij_javascript_align_multiline_parameters_in_calls = false +ij_javascript_align_multiline_ternary_operation = false +ij_javascript_align_object_properties = 0 +ij_javascript_align_union_types = false +ij_javascript_align_var_statements = 0 +ij_javascript_array_initializer_new_line_after_left_brace = false +ij_javascript_array_initializer_right_brace_on_new_line = false +ij_javascript_array_initializer_wrap = normal +ij_javascript_assignment_wrap = off +ij_javascript_binary_operation_sign_on_next_line = true +ij_javascript_binary_operation_wrap = normal +ij_javascript_blacklist_imports = rxjs/Rx,node_modules/**/*,@angular/material,@angular/material/typings/** +ij_javascript_blank_lines_after_imports = 1 +ij_javascript_blank_lines_around_class = 1 +ij_javascript_blank_lines_around_field = 0 +ij_javascript_blank_lines_around_function = 1 +ij_javascript_blank_lines_around_method = 1 +ij_javascript_block_brace_style = end_of_line +ij_javascript_call_parameters_new_line_after_left_paren = false +ij_javascript_call_parameters_right_paren_on_new_line = false +ij_javascript_call_parameters_wrap = normal +ij_javascript_catch_on_new_line = false +ij_javascript_chained_call_dot_on_new_line = true +ij_javascript_class_brace_style = end_of_line +ij_javascript_comma_on_new_line = false +ij_javascript_do_while_brace_force = always +ij_javascript_else_on_new_line = false +ij_javascript_enforce_trailing_comma = keep +ij_javascript_extends_keyword_wrap = off +ij_javascript_extends_list_wrap = off +ij_javascript_field_prefix = _ +ij_javascript_file_name_style = relaxed +ij_javascript_finally_on_new_line = false +ij_javascript_for_brace_force = always +ij_javascript_for_statement_new_line_after_left_paren = false +ij_javascript_for_statement_right_paren_on_new_line = false +ij_javascript_for_statement_wrap = normal +ij_javascript_force_quote_style = false +ij_javascript_force_semicolon_style = false +ij_javascript_function_expression_brace_style = end_of_line +ij_javascript_if_brace_force = always +ij_javascript_import_merge_members = global +ij_javascript_import_prefer_absolute_path = global +ij_javascript_import_sort_members = true +ij_javascript_import_sort_module_name = false +ij_javascript_import_use_node_resolution = true +ij_javascript_imports_wrap = on_every_item +ij_javascript_indent_case_from_switch = true +ij_javascript_indent_chained_calls = false +ij_javascript_indent_package_children = 0 +ij_javascript_jsx_attribute_value = braces +ij_javascript_keep_blank_lines_in_code = 1 +ij_javascript_keep_first_column_comment = true +ij_javascript_keep_indents_on_empty_lines = false +ij_javascript_keep_line_breaks = true +ij_javascript_keep_simple_blocks_in_one_line = false +ij_javascript_keep_simple_methods_in_one_line = false +ij_javascript_line_comment_add_space = true +ij_javascript_line_comment_at_first_column = false +ij_javascript_method_brace_style = end_of_line +ij_javascript_method_call_chain_wrap = off +ij_javascript_method_parameters_new_line_after_left_paren = false +ij_javascript_method_parameters_right_paren_on_new_line = false +ij_javascript_method_parameters_wrap = normal +ij_javascript_object_literal_wrap = on_every_item +ij_javascript_parentheses_expression_new_line_after_left_paren = false +ij_javascript_parentheses_expression_right_paren_on_new_line = false +ij_javascript_place_assignment_sign_on_next_line = false +ij_javascript_prefer_as_type_cast = false +ij_javascript_prefer_parameters_wrap = false +ij_javascript_reformat_c_style_comments = false +ij_javascript_space_after_colon = true +ij_javascript_space_after_comma = true +ij_javascript_space_after_dots_in_rest_parameter = false +ij_javascript_space_after_generator_mult = true +ij_javascript_space_after_property_colon = true +ij_javascript_space_after_quest = true +ij_javascript_space_after_type_colon = true +ij_javascript_space_after_unary_not = false +ij_javascript_space_before_async_arrow_lparen = true +ij_javascript_space_before_catch_keyword = true +ij_javascript_space_before_catch_left_brace = true +ij_javascript_space_before_catch_parentheses = true +ij_javascript_space_before_class_lbrace = true +ij_javascript_space_before_class_left_brace = true +ij_javascript_space_before_colon = true +ij_javascript_space_before_comma = false +ij_javascript_space_before_do_left_brace = true +ij_javascript_space_before_else_keyword = true +ij_javascript_space_before_else_left_brace = true +ij_javascript_space_before_finally_keyword = true +ij_javascript_space_before_finally_left_brace = true +ij_javascript_space_before_for_left_brace = true +ij_javascript_space_before_for_parentheses = true +ij_javascript_space_before_for_semicolon = false +ij_javascript_space_before_function_left_parenth = true +ij_javascript_space_before_generator_mult = false +ij_javascript_space_before_if_left_brace = true +ij_javascript_space_before_if_parentheses = true +ij_javascript_space_before_method_call_parentheses = false +ij_javascript_space_before_method_left_brace = true +ij_javascript_space_before_method_parentheses = false +ij_javascript_space_before_property_colon = false +ij_javascript_space_before_quest = true +ij_javascript_space_before_switch_left_brace = true +ij_javascript_space_before_switch_parentheses = true +ij_javascript_space_before_try_left_brace = true +ij_javascript_space_before_type_colon = false +ij_javascript_space_before_unary_not = false +ij_javascript_space_before_while_keyword = true +ij_javascript_space_before_while_left_brace = true +ij_javascript_space_before_while_parentheses = true +ij_javascript_spaces_around_additive_operators = true +ij_javascript_spaces_around_arrow_function_operator = true +ij_javascript_spaces_around_assignment_operators = true +ij_javascript_spaces_around_bitwise_operators = true +ij_javascript_spaces_around_equality_operators = true +ij_javascript_spaces_around_logical_operators = true +ij_javascript_spaces_around_multiplicative_operators = true +ij_javascript_spaces_around_relational_operators = true +ij_javascript_spaces_around_shift_operators = true +ij_javascript_spaces_around_unary_operator = false +ij_javascript_spaces_within_array_initializer_brackets = false +ij_javascript_spaces_within_brackets = false +ij_javascript_spaces_within_catch_parentheses = false +ij_javascript_spaces_within_for_parentheses = false +ij_javascript_spaces_within_if_parentheses = false +ij_javascript_spaces_within_imports = false +ij_javascript_spaces_within_interpolation_expressions = false +ij_javascript_spaces_within_method_call_parentheses = false +ij_javascript_spaces_within_method_parentheses = false +ij_javascript_spaces_within_object_literal_braces = false +ij_javascript_spaces_within_object_type_braces = true +ij_javascript_spaces_within_parentheses = false +ij_javascript_spaces_within_switch_parentheses = false +ij_javascript_spaces_within_type_assertion = false +ij_javascript_spaces_within_union_types = true +ij_javascript_spaces_within_while_parentheses = false +ij_javascript_special_else_if_treatment = true +ij_javascript_ternary_operation_signs_on_next_line = true +ij_javascript_ternary_operation_wrap = normal +ij_javascript_union_types_wrap = on_every_item +ij_javascript_use_chained_calls_group_indents = false +ij_javascript_use_double_quotes = true +ij_javascript_use_explicit_js_extension = global +ij_javascript_use_path_mapping = always +ij_javascript_use_public_modifier = false +ij_javascript_use_semicolon_after_statement = true +ij_javascript_var_declaration_wrap = normal +ij_javascript_while_brace_force = always +ij_javascript_while_on_new_line = false +ij_javascript_wrap_comments = false + +[{*.cjsx,*.coffee}] +ij_continuation_indent_size = 2 +ij_coffeescript_align_function_body = false +ij_coffeescript_align_imports = false +ij_coffeescript_align_multiline_array_initializer_expression = true +ij_coffeescript_align_multiline_parameters = true +ij_coffeescript_align_multiline_parameters_in_calls = false +ij_coffeescript_align_object_properties = 0 +ij_coffeescript_align_union_types = false +ij_coffeescript_align_var_statements = 0 +ij_coffeescript_array_initializer_new_line_after_left_brace = false +ij_coffeescript_array_initializer_right_brace_on_new_line = false +ij_coffeescript_array_initializer_wrap = normal +ij_coffeescript_blacklist_imports = rxjs/Rx,node_modules/**/*,@angular/material,@angular/material/typings/** +ij_coffeescript_blank_lines_around_function = 1 +ij_coffeescript_call_parameters_new_line_after_left_paren = false +ij_coffeescript_call_parameters_right_paren_on_new_line = false +ij_coffeescript_call_parameters_wrap = normal +ij_coffeescript_chained_call_dot_on_new_line = true +ij_coffeescript_comma_on_new_line = false +ij_coffeescript_enforce_trailing_comma = keep +ij_coffeescript_field_prefix = _ +ij_coffeescript_file_name_style = relaxed +ij_coffeescript_force_quote_style = false +ij_coffeescript_force_semicolon_style = false +ij_coffeescript_function_expression_brace_style = end_of_line +ij_coffeescript_import_merge_members = global +ij_coffeescript_import_prefer_absolute_path = global +ij_coffeescript_import_sort_members = true +ij_coffeescript_import_sort_module_name = false +ij_coffeescript_import_use_node_resolution = true +ij_coffeescript_imports_wrap = on_every_item +ij_coffeescript_indent_chained_calls = true +ij_coffeescript_indent_package_children = 0 +ij_coffeescript_jsx_attribute_value = braces +ij_coffeescript_keep_blank_lines_in_code = 2 +ij_coffeescript_keep_first_column_comment = true +ij_coffeescript_keep_indents_on_empty_lines = false +ij_coffeescript_keep_line_breaks = true +ij_coffeescript_keep_simple_methods_in_one_line = false +ij_coffeescript_method_parameters_new_line_after_left_paren = false +ij_coffeescript_method_parameters_right_paren_on_new_line = false +ij_coffeescript_method_parameters_wrap = off +ij_coffeescript_object_literal_wrap = on_every_item +ij_coffeescript_prefer_as_type_cast = false +ij_coffeescript_reformat_c_style_comments = false +ij_coffeescript_space_after_comma = true +ij_coffeescript_space_after_dots_in_rest_parameter = false +ij_coffeescript_space_after_generator_mult = true +ij_coffeescript_space_after_property_colon = true +ij_coffeescript_space_after_type_colon = true +ij_coffeescript_space_after_unary_not = false +ij_coffeescript_space_before_async_arrow_lparen = true +ij_coffeescript_space_before_class_lbrace = true +ij_coffeescript_space_before_comma = false +ij_coffeescript_space_before_function_left_parenth = true +ij_coffeescript_space_before_generator_mult = false +ij_coffeescript_space_before_property_colon = false +ij_coffeescript_space_before_type_colon = false +ij_coffeescript_space_before_unary_not = false +ij_coffeescript_spaces_around_additive_operators = true +ij_coffeescript_spaces_around_arrow_function_operator = true +ij_coffeescript_spaces_around_assignment_operators = true +ij_coffeescript_spaces_around_bitwise_operators = true +ij_coffeescript_spaces_around_equality_operators = true +ij_coffeescript_spaces_around_logical_operators = true +ij_coffeescript_spaces_around_multiplicative_operators = true +ij_coffeescript_spaces_around_relational_operators = true +ij_coffeescript_spaces_around_shift_operators = true +ij_coffeescript_spaces_around_unary_operator = false +ij_coffeescript_spaces_within_array_initializer_braces = false +ij_coffeescript_spaces_within_array_initializer_brackets = false +ij_coffeescript_spaces_within_imports = false +ij_coffeescript_spaces_within_index_brackets = false +ij_coffeescript_spaces_within_interpolation_expressions = false +ij_coffeescript_spaces_within_method_call_parentheses = false +ij_coffeescript_spaces_within_method_parentheses = false +ij_coffeescript_spaces_within_object_braces = false +ij_coffeescript_spaces_within_object_literal_braces = false +ij_coffeescript_spaces_within_object_type_braces = true +ij_coffeescript_spaces_within_range_brackets = false +ij_coffeescript_spaces_within_type_assertion = false +ij_coffeescript_spaces_within_union_types = true +ij_coffeescript_union_types_wrap = on_every_item +ij_coffeescript_use_chained_calls_group_indents = false +ij_coffeescript_use_double_quotes = true +ij_coffeescript_use_explicit_js_extension = global +ij_coffeescript_use_path_mapping = always +ij_coffeescript_use_public_modifier = false +ij_coffeescript_use_semicolon_after_statement = false +ij_coffeescript_var_declaration_wrap = normal + +[{*.gradle,*.groovy,*.gant,*.gdsl,*.gy,*.gson}] +indent_size = 4 +tab_width = 4 +ij_continuation_indent_size = 8 +ij_groovy_align_group_field_declarations = false +ij_groovy_align_multiline_array_initializer_expression = false +ij_groovy_align_multiline_assignment = false +ij_groovy_align_multiline_binary_operation = false +ij_groovy_align_multiline_chained_methods = false +ij_groovy_align_multiline_extends_list = false +ij_groovy_align_multiline_for = true +ij_groovy_align_multiline_method_parentheses = false +ij_groovy_align_multiline_parameters = true +ij_groovy_align_multiline_parameters_in_calls = false +ij_groovy_align_multiline_resources = true +ij_groovy_align_multiline_ternary_operation = false +ij_groovy_align_multiline_throws_list = false +ij_groovy_align_throws_keyword = false +ij_groovy_array_initializer_new_line_after_left_brace = false +ij_groovy_array_initializer_right_brace_on_new_line = false +ij_groovy_array_initializer_wrap = off +ij_groovy_assert_statement_wrap = off +ij_groovy_assignment_wrap = off +ij_groovy_binary_operation_wrap = off +ij_groovy_blank_lines_after_class_header = 0 +ij_groovy_blank_lines_after_imports = 1 +ij_groovy_blank_lines_after_package = 1 +ij_groovy_blank_lines_around_class = 1 +ij_groovy_blank_lines_around_field = 0 +ij_groovy_blank_lines_around_field_in_interface = 0 +ij_groovy_blank_lines_around_method = 1 +ij_groovy_blank_lines_around_method_in_interface = 1 +ij_groovy_blank_lines_before_imports = 1 +ij_groovy_blank_lines_before_method_body = 0 +ij_groovy_blank_lines_before_package = 0 +ij_groovy_block_brace_style = end_of_line +ij_groovy_block_comment_at_first_column = true +ij_groovy_call_parameters_new_line_after_left_paren = false +ij_groovy_call_parameters_right_paren_on_new_line = false +ij_groovy_call_parameters_wrap = off +ij_groovy_catch_on_new_line = false +ij_groovy_class_annotation_wrap = split_into_lines +ij_groovy_class_brace_style = end_of_line +ij_groovy_do_while_brace_force = never +ij_groovy_else_on_new_line = false +ij_groovy_enum_constants_wrap = off +ij_groovy_extends_keyword_wrap = off +ij_groovy_extends_list_wrap = off +ij_groovy_field_annotation_wrap = split_into_lines +ij_groovy_finally_on_new_line = false +ij_groovy_for_brace_force = never +ij_groovy_for_statement_new_line_after_left_paren = false +ij_groovy_for_statement_right_paren_on_new_line = false +ij_groovy_for_statement_wrap = off +ij_groovy_if_brace_force = never +ij_groovy_indent_case_from_switch = true +ij_groovy_keep_blank_lines_before_right_brace = 2 +ij_groovy_keep_blank_lines_in_code = 2 +ij_groovy_keep_blank_lines_in_declarations = 2 +ij_groovy_keep_control_statement_in_one_line = true +ij_groovy_keep_first_column_comment = true +ij_groovy_keep_indents_on_empty_lines = false +ij_groovy_keep_line_breaks = true +ij_groovy_keep_multiple_expressions_in_one_line = false +ij_groovy_keep_simple_blocks_in_one_line = false +ij_groovy_keep_simple_classes_in_one_line = true +ij_groovy_keep_simple_lambdas_in_one_line = true +ij_groovy_keep_simple_methods_in_one_line = true +ij_groovy_label_indent_absolute = false +ij_groovy_label_indent_size = 0 +ij_groovy_lambda_brace_style = end_of_line +ij_groovy_line_comment_add_space = false +ij_groovy_line_comment_at_first_column = true +ij_groovy_method_annotation_wrap = split_into_lines +ij_groovy_method_brace_style = end_of_line +ij_groovy_method_call_chain_wrap = off +ij_groovy_method_parameters_new_line_after_left_paren = false +ij_groovy_method_parameters_right_paren_on_new_line = false +ij_groovy_method_parameters_wrap = off +ij_groovy_modifier_list_wrap = false +ij_groovy_parameter_annotation_wrap = off +ij_groovy_parentheses_expression_new_line_after_left_paren = false +ij_groovy_parentheses_expression_right_paren_on_new_line = false +ij_groovy_prefer_parameters_wrap = false +ij_groovy_resource_list_new_line_after_left_paren = false +ij_groovy_resource_list_right_paren_on_new_line = false +ij_groovy_resource_list_wrap = off +ij_groovy_space_after_colon = true +ij_groovy_space_after_comma = true +ij_groovy_space_after_comma_in_type_arguments = true +ij_groovy_space_after_for_semicolon = true +ij_groovy_space_after_quest = true +ij_groovy_space_after_type_cast = true +ij_groovy_space_before_annotation_parameter_list = false +ij_groovy_space_before_array_initializer_left_brace = false +ij_groovy_space_before_catch_keyword = true +ij_groovy_space_before_catch_left_brace = true +ij_groovy_space_before_catch_parentheses = true +ij_groovy_space_before_class_left_brace = true +ij_groovy_space_before_colon = true +ij_groovy_space_before_comma = false +ij_groovy_space_before_do_left_brace = true +ij_groovy_space_before_else_keyword = true +ij_groovy_space_before_else_left_brace = true +ij_groovy_space_before_finally_keyword = true +ij_groovy_space_before_finally_left_brace = true +ij_groovy_space_before_for_left_brace = true +ij_groovy_space_before_for_parentheses = true +ij_groovy_space_before_for_semicolon = false +ij_groovy_space_before_if_left_brace = true +ij_groovy_space_before_if_parentheses = true +ij_groovy_space_before_method_call_parentheses = false +ij_groovy_space_before_method_left_brace = true +ij_groovy_space_before_method_parentheses = false +ij_groovy_space_before_quest = true +ij_groovy_space_before_switch_left_brace = true +ij_groovy_space_before_switch_parentheses = true +ij_groovy_space_before_synchronized_left_brace = true +ij_groovy_space_before_synchronized_parentheses = true +ij_groovy_space_before_try_left_brace = true +ij_groovy_space_before_try_parentheses = true +ij_groovy_space_before_while_keyword = true +ij_groovy_space_before_while_left_brace = true +ij_groovy_space_before_while_parentheses = true +ij_groovy_space_within_empty_array_initializer_braces = false +ij_groovy_space_within_empty_method_call_parentheses = false +ij_groovy_spaces_around_additive_operators = true +ij_groovy_spaces_around_assignment_operators = true +ij_groovy_spaces_around_bitwise_operators = true +ij_groovy_spaces_around_equality_operators = true +ij_groovy_spaces_around_lambda_arrow = true +ij_groovy_spaces_around_logical_operators = true +ij_groovy_spaces_around_multiplicative_operators = true +ij_groovy_spaces_around_relational_operators = true +ij_groovy_spaces_around_shift_operators = true +ij_groovy_spaces_within_annotation_parentheses = false +ij_groovy_spaces_within_array_initializer_braces = false +ij_groovy_spaces_within_braces = true +ij_groovy_spaces_within_brackets = false +ij_groovy_spaces_within_cast_parentheses = false +ij_groovy_spaces_within_catch_parentheses = false +ij_groovy_spaces_within_for_parentheses = false +ij_groovy_spaces_within_if_parentheses = false +ij_groovy_spaces_within_method_call_parentheses = false +ij_groovy_spaces_within_method_parentheses = false +ij_groovy_spaces_within_parentheses = false +ij_groovy_spaces_within_switch_parentheses = false +ij_groovy_spaces_within_synchronized_parentheses = false +ij_groovy_spaces_within_try_parentheses = false +ij_groovy_spaces_within_while_parentheses = false +ij_groovy_special_else_if_treatment = true +ij_groovy_ternary_operation_wrap = off +ij_groovy_throws_keyword_wrap = off +ij_groovy_throws_list_wrap = off +ij_groovy_use_relative_indents = false +ij_groovy_variable_annotation_wrap = off +ij_groovy_while_brace_force = never +ij_groovy_while_on_new_line = false +ij_groovy_wrap_long_lines = false + +[{*.kts,*.kt}] +indent_size = 4 +tab_width = 4 +ij_continuation_indent_size = 8 +ij_kotlin_align_in_columns_case_branch = false +ij_kotlin_align_multiline_binary_operation = false +ij_kotlin_align_multiline_extends_list = false +ij_kotlin_align_multiline_method_parentheses = false +ij_kotlin_align_multiline_parameters = true +ij_kotlin_align_multiline_parameters_in_calls = false +ij_kotlin_assignment_wrap = off +ij_kotlin_blank_lines_after_class_header = 0 +ij_kotlin_blank_lines_around_block_when_branches = 0 +ij_kotlin_block_comment_at_first_column = true +ij_kotlin_call_parameters_new_line_after_left_paren = false +ij_kotlin_call_parameters_right_paren_on_new_line = false +ij_kotlin_call_parameters_wrap = off +ij_kotlin_catch_on_new_line = false +ij_kotlin_class_annotation_wrap = split_into_lines +ij_kotlin_continuation_indent_for_chained_calls = true +ij_kotlin_continuation_indent_for_expression_bodies = true +ij_kotlin_continuation_indent_in_argument_lists = true +ij_kotlin_continuation_indent_in_elvis = true +ij_kotlin_continuation_indent_in_if_conditions = true +ij_kotlin_continuation_indent_in_parameter_lists = true +ij_kotlin_continuation_indent_in_supertype_lists = true +ij_kotlin_else_on_new_line = false +ij_kotlin_enum_constants_wrap = off +ij_kotlin_extends_list_wrap = off +ij_kotlin_field_annotation_wrap = split_into_lines +ij_kotlin_finally_on_new_line = false +ij_kotlin_if_rparen_on_new_line = false +ij_kotlin_import_nested_classes = false +ij_kotlin_insert_whitespaces_in_simple_one_line_method = true +ij_kotlin_keep_blank_lines_before_right_brace = 2 +ij_kotlin_keep_blank_lines_in_code = 2 +ij_kotlin_keep_blank_lines_in_declarations = 2 +ij_kotlin_keep_first_column_comment = true +ij_kotlin_keep_indents_on_empty_lines = false +ij_kotlin_keep_line_breaks = true +ij_kotlin_lbrace_on_next_line = false +ij_kotlin_line_comment_add_space = false +ij_kotlin_line_comment_at_first_column = true +ij_kotlin_method_annotation_wrap = split_into_lines +ij_kotlin_method_call_chain_wrap = off +ij_kotlin_method_parameters_new_line_after_left_paren = false +ij_kotlin_method_parameters_right_paren_on_new_line = false +ij_kotlin_method_parameters_wrap = off +ij_kotlin_name_count_to_use_star_import = 5 +ij_kotlin_name_count_to_use_star_import_for_members = 3 +ij_kotlin_parameter_annotation_wrap = off +ij_kotlin_space_after_comma = true +ij_kotlin_space_after_extend_colon = true +ij_kotlin_space_after_type_colon = true +ij_kotlin_space_before_catch_parentheses = true +ij_kotlin_space_before_comma = false +ij_kotlin_space_before_extend_colon = true +ij_kotlin_space_before_for_parentheses = true +ij_kotlin_space_before_if_parentheses = true +ij_kotlin_space_before_lambda_arrow = true +ij_kotlin_space_before_type_colon = false +ij_kotlin_space_before_when_parentheses = true +ij_kotlin_space_before_while_parentheses = true +ij_kotlin_spaces_around_additive_operators = true +ij_kotlin_spaces_around_assignment_operators = true +ij_kotlin_spaces_around_equality_operators = true +ij_kotlin_spaces_around_function_type_arrow = true +ij_kotlin_spaces_around_logical_operators = true +ij_kotlin_spaces_around_multiplicative_operators = true +ij_kotlin_spaces_around_range = false +ij_kotlin_spaces_around_relational_operators = true +ij_kotlin_spaces_around_unary_operator = false +ij_kotlin_spaces_around_when_arrow = true +ij_kotlin_variable_annotation_wrap = off +ij_kotlin_while_on_new_line = false +ij_kotlin_wrap_elvis_expressions = 1 +ij_kotlin_wrap_expression_body_functions = 0 +ij_kotlin_wrap_first_method_in_call_chain = false + +[{*.jspx,*.tagx}] +indent_size = 4 +tab_width = 4 +ij_continuation_indent_size = 8 +ij_jspx_keep_indents_on_empty_lines = false + +[{*.module,*.hphp,*.phtml,*.php5,*.php4,*.php,*.ctp,*.inc}] +indent_size = 4 +tab_width = 4 +ij_php_align_assignments = false +ij_php_align_class_constants = false +ij_php_align_group_field_declarations = false +ij_php_align_inline_comments = false +ij_php_align_key_value_pairs = false +ij_php_align_multiline_array_initializer_expression = false +ij_php_align_multiline_binary_operation = false +ij_php_align_multiline_chained_methods = false +ij_php_align_multiline_extends_list = false +ij_php_align_multiline_for = true +ij_php_align_multiline_parameters = true +ij_php_align_multiline_parameters_in_calls = false +ij_php_align_multiline_ternary_operation = false +ij_php_align_phpdoc_comments = false +ij_php_align_phpdoc_param_names = false +ij_php_anonymous_brace_style = end_of_line +ij_php_api_weight = 28 +ij_php_array_initializer_new_line_after_left_brace = false +ij_php_array_initializer_right_brace_on_new_line = false +ij_php_array_initializer_wrap = off +ij_php_assignment_wrap = off +ij_php_author_weight = 28 +ij_php_binary_operation_sign_on_next_line = false +ij_php_binary_operation_wrap = off +ij_php_blank_lines_after_class_header = 0 +ij_php_blank_lines_after_function = 1 +ij_php_blank_lines_after_imports = 1 +ij_php_blank_lines_after_opening_tag = 0 +ij_php_blank_lines_after_package = 0 +ij_php_blank_lines_around_class = 1 +ij_php_blank_lines_around_constants = 0 +ij_php_blank_lines_around_field = 0 +ij_php_blank_lines_around_method = 1 +ij_php_blank_lines_before_class_end = 0 +ij_php_blank_lines_before_imports = 1 +ij_php_blank_lines_before_method_body = 0 +ij_php_blank_lines_before_package = 1 +ij_php_blank_lines_before_return_statement = 0 +ij_php_blank_lines_between_imports = 0 +ij_php_block_brace_style = end_of_line +ij_php_call_parameters_new_line_after_left_paren = false +ij_php_call_parameters_right_paren_on_new_line = false +ij_php_call_parameters_wrap = off +ij_php_catch_on_new_line = false +ij_php_category_weight = 28 +ij_php_class_brace_style = next_line +ij_php_comma_after_last_array_element = false +ij_php_concat_spaces = true +ij_php_copyright_weight = 28 +ij_php_deprecated_weight = 28 +ij_php_do_while_brace_force = never +ij_php_else_if_style = as_is +ij_php_else_on_new_line = false +ij_php_example_weight = 28 +ij_php_extends_keyword_wrap = off +ij_php_extends_list_wrap = off +ij_php_fields_default_visibility = private +ij_php_filesource_weight = 28 +ij_php_finally_on_new_line = false +ij_php_for_brace_force = never +ij_php_for_statement_new_line_after_left_paren = false +ij_php_for_statement_right_paren_on_new_line = false +ij_php_for_statement_wrap = off +ij_php_force_short_declaration_array_style = false +ij_php_global_weight = 28 +ij_php_group_use_wrap = on_every_item +ij_php_if_brace_force = never +ij_php_if_lparen_on_next_line = false +ij_php_if_rparen_on_next_line = false +ij_php_ignore_weight = 28 +ij_php_import_sorting = alphabetic +ij_php_indent_break_from_case = true +ij_php_indent_case_from_switch = true +ij_php_indent_code_in_php_tags = false +ij_php_internal_weight = 28 +ij_php_keep_blank_lines_after_lbrace = 2 +ij_php_keep_blank_lines_before_right_brace = 2 +ij_php_keep_blank_lines_in_code = 2 +ij_php_keep_blank_lines_in_declarations = 2 +ij_php_keep_control_statement_in_one_line = true +ij_php_keep_first_column_comment = true +ij_php_keep_indents_on_empty_lines = false +ij_php_keep_line_breaks = true +ij_php_keep_rparen_and_lbrace_on_one_line = false +ij_php_keep_simple_methods_in_one_line = false +ij_php_lambda_brace_style = end_of_line +ij_php_license_weight = 28 +ij_php_line_comment_add_space = false +ij_php_line_comment_at_first_column = true +ij_php_link_weight = 28 +ij_php_lower_case_boolean_const = false +ij_php_lower_case_null_const = false +ij_php_method_brace_style = next_line +ij_php_method_call_chain_wrap = off +ij_php_method_parameters_new_line_after_left_paren = false +ij_php_method_parameters_right_paren_on_new_line = false +ij_php_method_parameters_wrap = off +ij_php_method_weight = 28 +ij_php_modifier_list_wrap = false +ij_php_multiline_chained_calls_semicolon_on_new_line = false +ij_php_namespace_brace_style = 1 +ij_php_null_type_position = in_the_end +ij_php_package_weight = 28 +ij_php_param_weight = 0 +ij_php_parentheses_expression_new_line_after_left_paren = false +ij_php_parentheses_expression_right_paren_on_new_line = false +ij_php_phpdoc_blank_line_before_tags = false +ij_php_phpdoc_blank_lines_around_parameters = false +ij_php_phpdoc_keep_blank_lines = true +ij_php_phpdoc_param_spaces_between_name_and_description = 1 +ij_php_phpdoc_param_spaces_between_tag_and_type = 1 +ij_php_phpdoc_param_spaces_between_type_and_name = 1 +ij_php_phpdoc_use_fqcn = false +ij_php_phpdoc_wrap_long_lines = false +ij_php_place_assignment_sign_on_next_line = false +ij_php_place_parens_for_constructor = 0 +ij_php_property_read_weight = 28 +ij_php_property_weight = 28 +ij_php_property_write_weight = 28 +ij_php_return_type_on_new_line = false +ij_php_return_weight = 1 +ij_php_see_weight = 28 +ij_php_since_weight = 28 +ij_php_sort_phpdoc_elements = true +ij_php_space_after_colon = true +ij_php_space_after_colon_in_return_type = true +ij_php_space_after_comma = true +ij_php_space_after_for_semicolon = true +ij_php_space_after_quest = true +ij_php_space_after_type_cast = false +ij_php_space_after_unary_not = false +ij_php_space_before_array_initializer_left_brace = false +ij_php_space_before_catch_keyword = true +ij_php_space_before_catch_left_brace = true +ij_php_space_before_catch_parentheses = true +ij_php_space_before_class_left_brace = true +ij_php_space_before_closure_left_parenthesis = true +ij_php_space_before_colon = true +ij_php_space_before_colon_in_return_type = false +ij_php_space_before_comma = false +ij_php_space_before_do_left_brace = true +ij_php_space_before_else_keyword = true +ij_php_space_before_else_left_brace = true +ij_php_space_before_finally_keyword = true +ij_php_space_before_finally_left_brace = true +ij_php_space_before_for_left_brace = true +ij_php_space_before_for_parentheses = true +ij_php_space_before_for_semicolon = false +ij_php_space_before_if_left_brace = true +ij_php_space_before_if_parentheses = true +ij_php_space_before_method_call_parentheses = false +ij_php_space_before_method_left_brace = true +ij_php_space_before_method_parentheses = false +ij_php_space_before_quest = true +ij_php_space_before_switch_left_brace = true +ij_php_space_before_switch_parentheses = true +ij_php_space_before_try_left_brace = true +ij_php_space_before_unary_not = false +ij_php_space_before_while_keyword = true +ij_php_space_before_while_left_brace = true +ij_php_space_before_while_parentheses = true +ij_php_space_between_ternary_quest_and_colon = false +ij_php_spaces_around_additive_operators = true +ij_php_spaces_around_arrow = false +ij_php_spaces_around_assignment_in_declare = false +ij_php_spaces_around_assignment_operators = true +ij_php_spaces_around_bitwise_operators = true +ij_php_spaces_around_equality_operators = true +ij_php_spaces_around_logical_operators = true +ij_php_spaces_around_multiplicative_operators = true +ij_php_spaces_around_null_coalesce_operator = true +ij_php_spaces_around_relational_operators = true +ij_php_spaces_around_shift_operators = true +ij_php_spaces_around_unary_operator = false +ij_php_spaces_around_var_within_brackets = false +ij_php_spaces_within_array_initializer_braces = false +ij_php_spaces_within_brackets = false +ij_php_spaces_within_catch_parentheses = false +ij_php_spaces_within_for_parentheses = false +ij_php_spaces_within_if_parentheses = false +ij_php_spaces_within_method_call_parentheses = false +ij_php_spaces_within_method_parentheses = false +ij_php_spaces_within_parentheses = false +ij_php_spaces_within_short_echo_tags = true +ij_php_spaces_within_switch_parentheses = false +ij_php_spaces_within_while_parentheses = false +ij_php_special_else_if_treatment = false +ij_php_subpackage_weight = 28 +ij_php_ternary_operation_signs_on_next_line = false +ij_php_ternary_operation_wrap = off +ij_php_throws_weight = 2 +ij_php_todo_weight = 28 +ij_php_unknown_tag_weight = 28 +ij_php_upper_case_boolean_const = false +ij_php_upper_case_null_const = false +ij_php_uses_weight = 28 +ij_php_var_weight = 28 +ij_php_variable_naming_style = mixed +ij_php_version_weight = 28 +ij_php_while_brace_force = never +ij_php_while_on_new_line = false + +[{*.nomad,*.hcl}] +tab_width = 4 +ij_continuation_indent_size = 8 +ij_hcl_align_property_on_equals = 2 +ij_hcl_align_property_on_value = 1 +ij_hcl_array_wrapping = 2 +ij_hcl_do_not_align_property = 0 +ij_hcl_keep_blank_lines_in_code = 2 +ij_hcl_keep_indents_on_empty_lines = false +ij_hcl_keep_line_breaks = true +ij_hcl_object_wrapping = 2 +ij_hcl_property_alignment = 0 +ij_hcl_property_line_commenter_character = 0 +ij_hcl_space_after_comma = true +ij_hcl_space_before_comma = false +ij_hcl_spaces_around_assignment_operators = true +ij_hcl_spaces_within_braces = false +ij_hcl_spaces_within_brackets = false +ij_hcl_wrap_long_lines = false + +[{*.pyw,*.py}] +max_line_length = 80 +ij_python_align_collections_and_comprehensions = true +ij_python_align_multiline_imports = true +ij_python_align_multiline_parameters = false +ij_python_align_multiline_parameters_in_calls = true +ij_python_blank_line_at_file_end = true +ij_python_blank_lines_after_imports = 1 +ij_python_blank_lines_after_local_imports = 0 +ij_python_blank_lines_around_class = 1 +ij_python_blank_lines_around_method = 1 +ij_python_blank_lines_around_top_level_classes_functions = 2 +ij_python_blank_lines_before_first_method = 0 +ij_python_dict_alignment = 0 +ij_python_dict_new_line_after_left_brace = false +ij_python_dict_new_line_before_right_brace = false +ij_python_dict_wrapping = 1 +ij_python_from_import_new_line_after_left_parenthesis = false +ij_python_from_import_new_line_before_right_parenthesis = false +ij_python_from_import_parentheses_force_if_multiline = false +ij_python_from_import_trailing_comma_if_multiline = false +ij_python_from_import_wrapping = 1 +ij_python_hang_closing_brackets = false +ij_python_keep_blank_lines_in_code = 1 +ij_python_keep_blank_lines_in_declarations = 1 +ij_python_keep_indents_on_empty_lines = false +ij_python_keep_line_breaks = true +ij_python_new_line_after_colon = false +ij_python_new_line_after_colon_multi_clause = true +ij_python_optimize_imports_always_split_from_imports = false +ij_python_optimize_imports_case_insensitive_order = false +ij_python_optimize_imports_join_from_imports_with_same_source = false +ij_python_optimize_imports_sort_by_type_first = true +ij_python_optimize_imports_sort_imports = true +ij_python_optimize_imports_sort_names_in_from_imports = false +ij_python_space_after_comma = true +ij_python_space_after_number_sign = true +ij_python_space_after_py_colon = true +ij_python_space_before_backslash = true +ij_python_space_before_comma = false +ij_python_space_before_for_semicolon = false +ij_python_space_before_lbracket = false +ij_python_space_before_method_call_parentheses = false +ij_python_space_before_method_parentheses = false +ij_python_space_before_number_sign = true +ij_python_space_before_py_colon = false +ij_python_space_within_empty_method_call_parentheses = false +ij_python_space_within_empty_method_parentheses = false +ij_python_spaces_around_additive_operators = true +ij_python_spaces_around_assignment_operators = true +ij_python_spaces_around_bitwise_operators = true +ij_python_spaces_around_eq_in_keyword_argument = false +ij_python_spaces_around_eq_in_named_parameter = false +ij_python_spaces_around_equality_operators = true +ij_python_spaces_around_multiplicative_operators = true +ij_python_spaces_around_power_operator = true +ij_python_spaces_around_relational_operators = true +ij_python_spaces_around_shift_operators = true +ij_python_spaces_within_braces = false +ij_python_spaces_within_brackets = false +ij_python_spaces_within_method_call_parentheses = false +ij_python_spaces_within_method_parentheses = false +ij_python_use_continuation_indent_for_arguments = true +ij_python_use_continuation_indent_for_collection_and_comprehensions = false +ij_python_wrap_long_lines = false + +[{*.sht,*.htm,*.html,*.shtm,*.shtml,*.ng}] +ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3 +ij_html_align_attributes = true +ij_html_align_text = false +ij_html_attribute_wrap = normal +ij_html_block_comment_at_first_column = true +ij_html_do_not_align_children_of_min_lines = 0 +ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p +ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot +ij_html_enforce_quotes = false +ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var +ij_html_keep_blank_lines = 2 +ij_html_keep_indents_on_empty_lines = false +ij_html_keep_line_breaks = true +ij_html_keep_line_breaks_in_text = true +ij_html_keep_whitespaces = false +ij_html_keep_whitespaces_inside = span,pre,textarea +ij_html_line_comment_at_first_column = true +ij_html_new_line_after_last_attribute = never +ij_html_new_line_before_first_attribute = never +ij_html_quote_style = double +ij_html_remove_new_line_before_tags = br +ij_html_space_after_tag_name = false +ij_html_space_around_equality_in_attribute = false +ij_html_space_inside_empty_tag = false +ij_html_text_wrap = normal + +[{*.tf,*.tfvars}] +tab_width = 4 +ij_continuation_indent_size = 8 +ij_hcl-terraform_align_property_on_equals = 2 +ij_hcl-terraform_align_property_on_value = 1 +ij_hcl-terraform_array_wrapping = 2 +ij_hcl-terraform_do_not_align_property = 0 +ij_hcl-terraform_keep_blank_lines_in_code = 2 +ij_hcl-terraform_keep_indents_on_empty_lines = false +ij_hcl-terraform_keep_line_breaks = true +ij_hcl-terraform_object_wrapping = 2 +ij_hcl-terraform_property_alignment = 0 +ij_hcl-terraform_property_line_commenter_character = 0 +ij_hcl-terraform_space_after_comma = true +ij_hcl-terraform_space_before_comma = false +ij_hcl-terraform_spaces_around_assignment_operators = true +ij_hcl-terraform_spaces_within_braces = false +ij_hcl-terraform_spaces_within_brackets = false +ij_hcl-terraform_wrap_long_lines = false + +[{*.vsl,*.vm,*.ft}] +indent_size = 4 +tab_width = 4 +ij_continuation_indent_size = 8 +ij_vtl_keep_indents_on_empty_lines = false + +[{*.xjsp,*.tag,*.jsp,*.jsf,*.jspf,*.tagf}] +indent_size = 4 +tab_width = 4 +ij_continuation_indent_size = 8 +ij_jsp_jsp_prefer_comma_separated_import_list = false +ij_jsp_keep_indents_on_empty_lines = false + +[{*.yml,*.yaml}] +ij_yaml_keep_indents_on_empty_lines = false +ij_yaml_keep_line_breaks = true + +[{*.zsh,*.bash,*.sh}] +ij_shell_binary_ops_start_line = false +ij_shell_keep_column_alignment_padding = false +ij_shell_minify_program = false +ij_shell_redirect_followed_by_space = false +ij_shell_switch_cases_indented = false + +[{composer.lock,.eslintrc,bowerrc,.babelrc,jest.config,.stylelintrc,*.jsb3,*.jsb2,*.json}] +ij_json_keep_blank_lines_in_code = 0 +ij_json_keep_indents_on_empty_lines = false +ij_json_keep_line_breaks = true +ij_json_space_after_colon = true +ij_json_space_after_comma = true +ij_json_space_before_colon = true +ij_json_space_before_comma = false +ij_json_spaces_within_braces = false +ij_json_spaces_within_brackets = false +ij_json_wrap_long_lines = false + +[{phpunit.xml.dist,*.jhm,*.xjb,*.rng,*.qrc,*.wsdl,*.wsdd,*.fxml,*.plan,*.bpmn,*.pom,*.xslt,*.jrxml,*.ant,*.xul,*.xsl,*.xsd,*.tld,*.jnlp,*.wadl,*.xml}] +ij_continuation_indent_size = 2 +ij_xml_block_comment_at_first_column = true +ij_xml_keep_indents_on_empty_lines = false +ij_xml_line_comment_at_first_column = true +ij_xml_use_custom_settings = true + +[{spring.schemas,spring.handlers,*.properties}] +ij_properties_align_group_field_declarations = false diff --git a/.github/tw-rules.yaml b/.github/tw-rules.yaml new file mode 100644 index 0000000..295545d --- /dev/null +++ b/.github/tw-rules.yaml @@ -0,0 +1 @@ +runChecks: true diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..36724f2 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,121 @@ +name: "Build and Test" + +on: + pull_request: + branches: + - main + push: + branches: + - main + +jobs: + matrix_build: + name: "Matrix Build" + runs-on: + - ubuntu-latest + strategy: + fail-fast: false + max-parallel: 100 + matrix: + spring_boot_version: + - 3.2.2 + - 3.1.2 + - 3.0.9 + - 2.7.14 + container: + image: azul/zulu-openjdk:17 + env: + SPRING_BOOT_VERSION: ${{ matrix.spring_boot_version }} + GRADLE_OPTS: "-Djava.security.egd=file:/dev/./urandom -Dorg.gradle.parallel=true" + IN_CI: true + steps: + - name: "Install packages" + run: apt-get update && apt-get install -y git unzip docker docker-compose + - name: Checkout repository + uses: actions/checkout@v3 + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + with: + gradle-home-cache-cleanup: true + # Comment out when you are upgrading gradle in a branch and doing tons of commits you would need to test. + # cache-read-only: false + - name: "Assemble jar" + uses: gradle/gradle-build-action@v2 + with: + arguments: assemble --console=plain --info --stacktrace --parallel + - name: "Compile tests" + uses: gradle/gradle-build-action@v2 + with: + arguments: compileTest --console=plain --info --stacktrace --parallel + - name: "Run checks" + uses: gradle/gradle-build-action@v2 + with: + arguments: check -x test --console=plain --stacktrace + - name: "Run tests" + uses: gradle/gradle-build-action@v2 + with: + arguments: -Dspring.profiles.include=continuous-integration test --console=plain --info --stacktrace + - name: "Test if publishing works" + uses: gradle/gradle-build-action@v2 + with: + arguments: publishToMavenLocal --console=plain --info --stacktrace + - name: "Publish Test Report" + uses: mikepenz/action-junit-report@v3 + if: always() + with: + check_name: Test Report-(${{ matrix.spring_boot_version }}) + report_paths: '**/build/test-results/**/*.xml' + github_token: ${{ secrets.GITHUB_TOKEN }} + require_tests: true + - name: Publish checkstyle report + if: always() + uses: jwgmeligmeyling/checkstyle-github-action@master + with: + name: Checkstyle Report-(${{ matrix.spring_boot_version }}) + path: '**/build/reports/**/*.xml' + - name: Publish spotbugs report + if: failure() + uses: jwgmeligmeyling/spotbugs-github-action@master + with: + name: Spotbugs Report-(${{ matrix.spring_boot_version }}) + path: '**/build/reports/**/*.xml' + - name: "Collect test reports" + run: | + tar -zcvf all-test-reports-${{ matrix.spring_boot_version }}.tar.gz **/build/reports + if: always() + - name: "Store test results" + uses: actions/upload-artifact@v3 + if: always() + with: + name: all-test-reports-${{ matrix.spring_boot_version }} + path: all-test-reports-${{ matrix.spring_boot_version }}.tar.gz + retention-days: 7 + build: + name: "Build and Test" + runs-on: + - ubuntu-latest + needs: matrix_build + container: + image: azul/zulu-openjdk:17 + steps: + # Needed hacks to properly fail the build when one matrix build fails. + - name: Do something so that GHA is happy + run: echo "Be happy!" + - name: Verify matrix jobs succeeded + if: ${{ needs.matrix_build.result != 'success' }} + run: exit 1 + - name: "Install packages" + run: apt-get update && apt-get install -y git unzip + - name: Checkout repository + uses: actions/checkout@v3 + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + with: + gradle-home-cache-cleanup: true + # Comment out when you are upgrading gradle in a branch and doing tons of commits you would need to test. + # cache-read-only: false + - name: "Tag release" + if: github.ref == 'refs/heads/master' + uses: gradle/gradle-build-action@v2 + with: + arguments: tagRelease --console=plain --info --stacktrace diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..ae79d58 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,23 @@ +name: Mark stale issues and pull requests + +on: + schedule: + - cron: "30 1 * * *" + +jobs: + stale: + runs-on: + - ubuntu-latest + steps: + - uses: actions/stale@v5.1.1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'Stale issue message' + stale-pr-message: 'Stale pull request message' + stale-issue-label: 'no-issue-activity' + stale-pr-label: 'no-pr-activity' + days-before-stale: 60 + days-before-close: 10 + days-before-issue-stale: -1 + days-before-issue-close: -1 + operations-per-run: 100 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e0137a6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +.gradle +build/ +out/ + +# Idea IDE files +*.iml +*.ipr +*.iws +.idea \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e6cd27d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2024-03-21 + +### Added + +* A bean to ask the current environment from. diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000..235b5b3 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @transferwise/application-engineering diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..4517870 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,13 @@ +Copyright 2021 TransferWise Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b15d970 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# Wise Environment. + +![Apache 2](https://img.shields.io/hexpm/l/plug.svg) +![Java 11](https://img.shields.io/badge/Java-11-blue.svg) +![Maven Central](https://badgen.net/maven/v/maven-central/com.transferwise.common/wise-environment) +[![Owners](https://img.shields.io/badge/team-AppEng-blueviolet.svg?logo=wise)](https://transferwise.atlassian.net/wiki/spaces/EKB/pages/2520812116/Application+Engineering+Team) [![Slack](https://img.shields.io/badge/slack-sre--guild-blue.svg?logo=slack)](https://app.slack.com/client/T026FB76G/CLR1U8SNS) +> Use the `@application-engineering-on-call` handle on Slack for help. +--- + +Provides information to other libraries in which environment they are running in. + +Allows to set default properties via environment variables and system properties. + +Those have to prefixed respectively with +* `WISE_DEFAULTS_` +* `wise.defaults.` + +E.g. +* `WISE_DEFAULTS_WISE_ENVIRONMENT_TEST_VALUE1` +* `wise.defaults.wise.environment.test.value4` + +## License +Copyright 2024 TransferWise Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/build.common.gradle b/build.common.gradle new file mode 100644 index 0000000..616764c --- /dev/null +++ b/build.common.gradle @@ -0,0 +1,130 @@ +import org.gradle.api.tasks.testing.logging.TestExceptionFormat +import org.gradle.api.tasks.testing.logging.TestLogEvent + +buildscript { + repositories { + mavenCentral() + mavenLocal() + } +} + +apply plugin: "java-library" +apply plugin: "checkstyle" +apply plugin: "idea" +apply plugin: "com.github.spotbugs" +apply plugin: "groovy" + +apply from: "$rootProject.rootDir/build.libraries.gradle" + +group = "com.transferwise.common" + +repositories { + mavenCentral() + mavenLocal() +} + +configurations { + local { + canBeResolved(false) + canBeConsumed(false) + } + compileClasspath { + extendsFrom(local) + } + runtimeClasspath { + extendsFrom(local) + } + testCompileClasspath { + extendsFrom(local) + } + testRuntimeClasspath { + extendsFrom(local) + } + annotationProcessor { + extendsFrom(local) + } + testAnnotationProcessor { + extendsFrom(local) + } +} + +dependencies { + local(platform(libraries.springBootDependencies)) + + local(libraries.lombok) + + compileOnly libraries.spotbugsAnnotations +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + + withSourcesJar() + withJavadocJar() +} + +jar { + manifest { + attributes( + "Implementation-Title": "Transferwise Base Utils", + "Implementation-Version": archiveVersion + ) + } +} + +compileJava { + options.encoding = 'utf-8' + options.compilerArgs << '-parameters' + options.compilerArgs << '-Xlint' + options.compilerArgs << '-Xlint:-processing' + + options.fork = true + options.forkOptions.jvmArgs << '-Xmx256m' +} + +compileTestJava { + options.fork = true + options.forkOptions.jvmArgs << '-Xmx256m' +} + +test { + useJUnitPlatform() + + environment("WISE_DEFAULTS_WISE_ENVIRONMENT_TEST_VALUE1", "foo") + environment("WISE_DEFAULTS_WISE_ENVIRONMENT_TEST_VALUE2", "foo") + environment("WISE_ENVIRONMENT_TEST_VALUE3", "foo") + + systemProperty("wise.defaults.wise.environment.test.value4", "foo") + + testLogging { + events TestLogEvent.STARTED, TestLogEvent.FAILED, TestLogEvent.SKIPPED, TestLogEvent.PASSED, + TestLogEvent.STANDARD_ERROR + showExceptions = true + showStackTraces = true + exceptionFormat = TestExceptionFormat.FULL + } +} + +tasks.findAll { it.name.startsWith("spotbugs") }*.configure { + excludeFilter = file("$rootProject.rootDir/spotbugs-exclude.xml") + + reports { + xml.required = true + html.required = true + } +} + +tasks.withType(Checkstyle).configureEach { + config = resources.text.fromFile(file("$rootProject.rootDir/google_checks.xml")) + + // Deprecated, checkstyle does not like the namings. + exclude "com/transferwise/common/baseutils/tracing/**" + + maxWarnings = 0 + + reports { + xml.required = true + html.required = true + } +} diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..e14fd0c --- /dev/null +++ b/build.gradle @@ -0,0 +1,53 @@ +import com.github.spotbugs.snom.Confidence +import com.github.spotbugs.snom.Effort +import org.eclipse.jgit.api.errors.RefAlreadyExistsException + +plugins { + id "com.github.spotbugs" version "+" + id "idea" + id 'org.ajoberstar.grgit' version '+' + id 'io.github.gradle-nexus.publish-plugin' version "1.1.0" +} + +idea.project { + vcs = 'Git' + languageLevel = JavaVersion.VERSION_17 + targetBytecodeVersion = JavaVersion.VERSION_17 +} + +ext.projectName = "Wise Environment" +ext.projectDescription = "Wise Environment" +ext.projectArtifactName = "wise-environment-starter" + +apply from: 'build.common.gradle' + +tasks.register('tagRelease') { + doLast { + try { + grgit.tag.add { + name = "v$version" + message = "Release of ${version}" + } + grgit.push(refsOrSpecs: ["v$version"]) + } + catch (RefAlreadyExistsException ignored) { + logger.warn("Tag v$version already exists.") + } + } +} + +group = "com.transferwise.common" + +nexusPublishing { + repositories { + sonatype { + username = System.getenv("SONATYPE_USER") + password = System.getenv("SONATYPE_PASSWORD") + } + } +} + +spotbugs { + effort = Effort.valueOf('MAX') + reportLevel = Confidence.valueOf('DEFAULT') +} \ No newline at end of file diff --git a/build.libraries.gradle b/build.libraries.gradle new file mode 100644 index 0000000..5df390b --- /dev/null +++ b/build.libraries.gradle @@ -0,0 +1,14 @@ +ext { + springBootVersion = "${System.getenv("SPRING_BOOT_VERSION") ?: "2.7.18"}" + + libraries = [ + // version defined + spotbugsAnnotations : "com.github.spotbugs:spotbugs-annotations:${spotbugs.toolVersion.get()}", + springBootDependencies: "org.springframework.boot:spring-boot-dependencies:${springBootVersion}", + + // versions managed by spring-boot-dependencies platform + lombok : 'org.projectlombok:lombok', + springBootStarter : "org.springframework.boot:spring-boot-starter", + springBootStarterTest : "org.springframework.boot:spring-boot-starter-test" + ] +} diff --git a/build.library.gradle b/build.library.gradle new file mode 100644 index 0000000..ec6474b --- /dev/null +++ b/build.library.gradle @@ -0,0 +1,79 @@ +apply plugin: "maven-publish" +apply plugin: "signing" + +ext.projectGitHubRepoName = "wise-environment" +ext.projectScmUrl = "https://github.com/transferwise/${projectGitHubRepoName}" +ext.projectScmConnection = "scm:git:git://github.com/transferwise/${projectGitHubRepoName}.git" + +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + afterEvaluate { + artifactId = projectArtifactName + } + + /* + This ensures that libraries will have explicit dependency versions in their Maven POM and Gradle module files, so that there would be less + ambiguity and less chances of dependency conflicts. + */ + versionMapping { + usage('java-api') { + fromResolutionOf('runtimeClasspath') + } + usage('java-runtime') { + fromResolutionOf('runtimeClasspath') + } + } + + pom { + name = projectName + description = projectDescription + url = projectScmUrl + packaging = "jar" + licenses { + license { + name = 'The Apache License, Version 2.0, Copyright 2019 TransferWise Ltd' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } + developers { + developer { + id = 'onukristo' + name = 'Kristo Kuusküll' + email = "kristo.kuuskull@transferwise.com" + organization = "Transferwise Ltd" + organizationUrl = "https://github.com/transferwise" + } + } + scm { + connection = projectScmConnection + developerConnection = projectScmConnection + url = projectScmUrl + } + withXml { + if (!asNode().dependencyManagement.isEmpty()){ + throw new IllegalStateException("There should not be any `dependencyManagement` block in POM.") + } + } + } + } + } + + if (System.getenv("OSS_SIGNING_KEY")) { + signing { + useInMemoryPgpKeys(System.getenv("OSS_SIGNING_KEY"), System.getenv("OSS_SIGNING_PASSWORD")) + sign publishing.publications.mavenJava + } + } + + repositories { + maven { + url System.getenv("MAVEN_URL") + credentials { + username = System.getenv("MAVEN_USER") + password = System.getenv("MAVEN_PASSWORD") + } + } + } +} diff --git a/google_checks.xml b/google_checks.xml new file mode 100644 index 0000000..a7fdda7 --- /dev/null +++ b/google_checks.xml @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..9759e31 --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +version=0.0.1 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..7f93135 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a80b22c --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..0adc8e1 --- /dev/null +++ b/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..6689b85 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..a2ae7cb --- /dev/null +++ b/settings.gradle @@ -0,0 +1,3 @@ +rootProject.name = 'wise-environment' + +include 'wise-environment-starter' diff --git a/spotbugs-exclude.xml b/spotbugs-exclude.xml new file mode 100644 index 0000000..072d9ed --- /dev/null +++ b/spotbugs-exclude.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/wise-environment-starter/build.gradle b/wise-environment-starter/build.gradle new file mode 100644 index 0000000..8c64afe --- /dev/null +++ b/wise-environment-starter/build.gradle @@ -0,0 +1,10 @@ +ext.projectArtifactName = "wise-environment" + +apply from: "$rootProject.rootDir/build.common.gradle" +apply from: "$rootProject.rootDir/build.library.gradle" + +dependencies { + compileOnly libraries.springBootStarter + + testImplementation libraries.springBootStarterTest +} diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/DefaultWiseEnvironment.java b/wise-environment-starter/src/main/java/com/wise/common/environment/DefaultWiseEnvironment.java new file mode 100644 index 0000000..297695e --- /dev/null +++ b/wise-environment-starter/src/main/java/com/wise/common/environment/DefaultWiseEnvironment.java @@ -0,0 +1,64 @@ +package com.wise.common.environment; + +import com.wise.common.environment.WiseEnvironmentProperties.SubType; +import com.wise.common.environment.WiseEnvironmentProperties.Type; + +public class DefaultWiseEnvironment implements WiseEnvironment { + + private final Type type; + private final SubType subType; + + public DefaultWiseEnvironment(WiseEnvironmentProperties wiseEnvironmentProperties) { + var type = wiseEnvironmentProperties.getType(); + if (type == null) { + if (isExecutedByIntegrationTest()) { + type = Type.INTEGRATION_TEST; + } + } + if (type == null) { + throw new IllegalStateException("Wise environment type is not specified. You can do that through 'wise.environment.type' property."); + } + + this.type = type; + this.subType = wiseEnvironmentProperties.getSubType(); + } + + @Override + public boolean isProduction() { + return Type.PRODUCTION == type; + } + + @Override + public boolean isStaging() { + return Type.STAGING == type; + } + + @Override + public boolean isIntegrationTest() { + return Type.INTEGRATION_TEST == type; + } + + @Override + public boolean isDevelopment() { + return Type.DEVELOPMENT == type; + } + + @Override + public boolean isSandbox() { + return SubType.SANDBOX == subType; + } + + @Override + public boolean isCustomEnvironment() { + return SubType.CUSTOM_ENVS == subType; + } + + protected boolean isExecutedByIntegrationTest() { + for (var stackTraceElement : Thread.currentThread().getStackTrace()) { + if ("org.springframework.boot.test.context.SpringBootContextLoader".equals(stackTraceElement.getClassName())) { + return true; + } + } + return false; + } +} diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsPropertiesPropertySource.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsPropertiesPropertySource.java new file mode 100644 index 0000000..a9bf574 --- /dev/null +++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsPropertiesPropertySource.java @@ -0,0 +1,25 @@ +package com.wise.common.environment; + +import java.util.Map; +import java.util.Properties; +import org.springframework.core.env.MapPropertySource; +import org.springframework.lang.Nullable; + +public class WiseDefaultsPropertiesPropertySource extends MapPropertySource { + + @SuppressWarnings({"rawtypes", "unchecked"}) + public WiseDefaultsPropertiesPropertySource(String name, Properties source) { + super(name, (Map) source); + } + + protected WiseDefaultsPropertiesPropertySource(String name, Map source) { + super(name, source); + } + + @Override + @Nullable + public Object getProperty(String name) { + return this.source.get("wise.defaults." + name); + } + +} diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsSystemEnvironmentPropertySource.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsSystemEnvironmentPropertySource.java new file mode 100644 index 0000000..1674f5d --- /dev/null +++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsSystemEnvironmentPropertySource.java @@ -0,0 +1,81 @@ +package com.wise.common.environment; + +import java.util.Map; +import org.springframework.core.env.MapPropertySource; +import org.springframework.lang.Nullable; +import org.springframework.util.Assert; + +public class WiseDefaultsSystemEnvironmentPropertySource extends MapPropertySource { + + public WiseDefaultsSystemEnvironmentPropertySource(String name, Map source) { + super(name, source); + } + + @Override + public boolean containsProperty(String name) { + return (getProperty(name) != null); + } + + @Override + @Nullable + public Object getProperty(String name) { + String actualName = resolvePropertyName(name); + if (logger.isDebugEnabled() && !name.equals(actualName)) { + logger.debug("PropertySource '" + getName() + "' does not contain property '" + name + + "', but found equivalent '" + actualName + "'"); + } + return super.getProperty(actualName); + } + + /** + * Check to see if this property source contains a property with the given name, or any underscore / uppercase variation thereof. Return the + * resolved name if one is found or otherwise the original name. Never returns {@code null}. + */ + protected final String resolvePropertyName(String name) { + var nameWithDefaultPrefix = "WISE_DEFAULTS_" + name; + + Assert.notNull(name, "Property name must not be null"); + String resolvedName = checkPropertyName(nameWithDefaultPrefix); + if (resolvedName != null) { + return resolvedName; + } + String uppercasedName = nameWithDefaultPrefix.toUpperCase(); + if (!name.equals(uppercasedName)) { + resolvedName = checkPropertyName(uppercasedName); + if (resolvedName != null) { + return resolvedName; + } + } + return name; + } + + @Nullable + private String checkPropertyName(String name) { + // Check name as-is + if (containsKey(name)) { + return name; + } + // Check name with just dots replaced + String noDotName = name.replace('.', '_'); + if (!name.equals(noDotName) && containsKey(noDotName)) { + return noDotName; + } + // Check name with just hyphens replaced + String noHyphenName = name.replace('-', '_'); + if (!name.equals(noHyphenName) && containsKey(noHyphenName)) { + return noHyphenName; + } + // Check name with dots and hyphens replaced + String noDotNoHyphenName = noDotName.replace('-', '_'); + if (!noDotName.equals(noDotNoHyphenName) && containsKey(noDotNoHyphenName)) { + return noDotNoHyphenName; + } + // Give up + return null; + } + + private boolean containsKey(String name) { + return this.source.containsKey(name); + } + +} diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironment.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironment.java new file mode 100644 index 0000000..b5f03fe --- /dev/null +++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironment.java @@ -0,0 +1,15 @@ +package com.wise.common.environment; + +public interface WiseEnvironment { + boolean isProduction(); + + boolean isStaging(); + + boolean isIntegrationTest(); + + boolean isDevelopment(); + + boolean isSandbox(); + + boolean isCustomEnvironment(); +} diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentAutoConfiguration.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentAutoConfiguration.java new file mode 100644 index 0000000..bee7a62 --- /dev/null +++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentAutoConfiguration.java @@ -0,0 +1,23 @@ +package com.wise.common.environment; + +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; + +@AutoConfiguration +public class WiseEnvironmentAutoConfiguration { + + @Bean + @ConditionalOnMissingBean(WiseEnvironmentProperties.class) + @ConfigurationProperties(prefix = "wise.environment.core", ignoreUnknownFields = false) + public WiseEnvironmentProperties wiseEnvironmentProperties() { + return new WiseEnvironmentProperties(); + } + + @Bean + @ConditionalOnMissingBean(WiseEnvironment.class) + public DefaultWiseEnvironment wiseEnvironment(WiseEnvironmentProperties wiseEnvironmentProperties) { + return new DefaultWiseEnvironment(wiseEnvironmentProperties); + } +} diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentEnvironmentPostProcessor.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentEnvironmentPostProcessor.java new file mode 100644 index 0000000..8146f0f --- /dev/null +++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentEnvironmentPostProcessor.java @@ -0,0 +1,21 @@ +package com.wise.common.environment; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.env.EnvironmentPostProcessor; +import org.springframework.core.env.ConfigurableEnvironment; + +@Slf4j +public class WiseEnvironmentEnvironmentPostProcessor implements EnvironmentPostProcessor { + + private static final String SYSTEM_ENV_PROPERTY_SOURCE_KEY = WiseEnvironmentEnvironmentPostProcessor.class.getName() + ".systemEnv"; + private static final String SYSTEM_PROPS_PROPERTY_SOURCE_KEY = WiseEnvironmentEnvironmentPostProcessor.class.getName() + ".systemProps"; + + @Override + public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { + environment.getPropertySources().addLast( + new WiseDefaultsPropertiesPropertySource(SYSTEM_PROPS_PROPERTY_SOURCE_KEY, environment.getSystemProperties())); + environment.getPropertySources().addLast( + new WiseDefaultsSystemEnvironmentPropertySource(SYSTEM_ENV_PROPERTY_SOURCE_KEY, environment.getSystemEnvironment())); + } +} diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentProperties.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentProperties.java new file mode 100644 index 0000000..d5c789b --- /dev/null +++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentProperties.java @@ -0,0 +1,25 @@ +package com.wise.common.environment; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WiseEnvironmentProperties { + + private Type type; + + private SubType subType; + + public enum Type { + PRODUCTION, + STAGING, + INTEGRATION_TEST, + DEVELOPMENT + } + + public enum SubType { + SANDBOX, + CUSTOM_ENVS + } +} diff --git a/wise-environment-starter/src/main/resources/META-INF/spring.factories b/wise-environment-starter/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..2596f7c --- /dev/null +++ b/wise-environment-starter/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.wise.common.environment.WiseEnvironmentAutoConfiguration +org.springframework.boot.env.EnvironmentPostProcessor=com.wise.common.environment.WiseEnvironmentEnvironmentPostProcessor \ No newline at end of file diff --git a/wise-environment-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/wise-environment-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..42fdf88 --- /dev/null +++ b/wise-environment-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.wise.common.environment.WiseEnvironmentAutoConfiguration \ No newline at end of file diff --git a/wise-environment-starter/src/test/java/com/wise/common/environment/ApplicationIntTest.java b/wise-environment-starter/src/test/java/com/wise/common/environment/ApplicationIntTest.java new file mode 100644 index 0000000..b2d84fb --- /dev/null +++ b/wise-environment-starter/src/test/java/com/wise/common/environment/ApplicationIntTest.java @@ -0,0 +1,35 @@ +package com.wise.common.environment; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest(classes = TestApplication.class) +public class ApplicationIntTest { + + @Autowired + private WiseEnvironment wiseEnvironment; + + @Autowired + private TestProperties testProperties; + + @Test + void applicationIsConfigured() { + assertTrue(wiseEnvironment.isIntegrationTest()); + } + + @Test + void defaultEnvVariablesAreApplied() { + // Default set via ENV can be overridden via application.yml + assertEquals("blah", testProperties.getValue1()); + // Default set via ENV is applied + assertEquals("foo", testProperties.getValue2()); + // Environment variables still overwrite everything + assertEquals("foo", testProperties.getValue3()); + // Defaults can be used through system properties as well + assertEquals("foo", testProperties.getValue4()); + } +} diff --git a/wise-environment-starter/src/test/java/com/wise/common/environment/TestApplication.java b/wise-environment-starter/src/test/java/com/wise/common/environment/TestApplication.java new file mode 100644 index 0000000..e05c1ba --- /dev/null +++ b/wise-environment-starter/src/test/java/com/wise/common/environment/TestApplication.java @@ -0,0 +1,15 @@ +package com.wise.common.environment; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +public class TestApplication { + + @Bean + @ConfigurationProperties("wise.environment.test") + public TestProperties testProperties() { + return new TestProperties(); + } +} diff --git a/wise-environment-starter/src/test/java/com/wise/common/environment/TestProperties.java b/wise-environment-starter/src/test/java/com/wise/common/environment/TestProperties.java new file mode 100644 index 0000000..50a9f49 --- /dev/null +++ b/wise-environment-starter/src/test/java/com/wise/common/environment/TestProperties.java @@ -0,0 +1,17 @@ +package com.wise.common.environment; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class TestProperties { + + private String value1; + + private String value2; + + private String value3; + + private String value4; +} diff --git a/wise-environment-starter/src/test/resources/application.yml b/wise-environment-starter/src/test/resources/application.yml new file mode 100644 index 0000000..0771846 --- /dev/null +++ b/wise-environment-starter/src/test/resources/application.yml @@ -0,0 +1,7 @@ +wise: + environment: + core: + type: integration_test + test: + value1: blah + value3: blah \ No newline at end of file