feat/upgrade-analysis #227
| @ -1 +0,0 @@ | |||||||
| 2.5.0 |  | ||||||
| @ -1,3 +1,26 @@ | |||||||
|  | ## 2.6.0 | ||||||
|  | 
 | ||||||
|  |  - **ADDED** annotate_redeclares (https://dart.dev/tools/linter-rules/annotate_redeclares) | ||||||
|  |  - **ADDED** deprecated_member_use_from_same_package (https://dart.dev/tools/linter-rules/deprecated_member_use_from_same_package) | ||||||
|  |  - **ADDED** diagnostic_describe_all_properties (https://dart.dev/tools/linter-rules/diagnostic_describe_all_properties) | ||||||
|  |  - **ADDED** implicit_reopen (https://dart.dev/tools/linter-rules/implicit_reopen) | ||||||
|  |  - **ADDED** invalid_case_patterns (https://dart.dev/tools/linter-rules/invalid_case_patterns) | ||||||
|  |  - **ADDED** matching_super_parameters (https://dart.dev/tools/linter-rules/matching_super_parameters) | ||||||
|  |  - **ADDED** no_literal_bool_comparisons (https://dart.dev/tools/linter-rules/no_literal_bool_comparisons) | ||||||
|  |  - **ADDED** no_self_assignments (https://dart.dev/tools/linter-rules/no_self_assignments) | ||||||
|  |  - **ADDED** no_wildcard_variable_uses (https://dart.dev/tools/linter-rules/no_wildcard_variable_uses) | ||||||
|  |  - **ADDED** prefer_final_parameters (https://dart.dev/tools/linter-rules/prefer_final_parameters) | ||||||
|  |  - **ADDED** prefer_foreach (https://dart.dev/tools/linter-rules/prefer_foreach) | ||||||
|  |  - **ADDED** type_literal_in_constant_pattern (https://dart.dev/tools/linter-rules/type_literal_in_constant_pattern) | ||||||
|  |  - **ADDED** unnecessary_breaks (https://dart.dev/tools/linter-rules/unnecessary_breaks) | ||||||
|  |  - **ADDED** unnecessary_library_directive (https://dart.dev/tools/linter-rules/unnecessary_library_directive) | ||||||
|  |  - **ADDED** unnecessary_null_aware_operator_on_extension_on_nullable (https://dart.dev/tools/linter-rules/unnecessary_null_aware_operator_on_extension_on_nullable) | ||||||
|  |  - **REMOVED** always_require_non_null_named_parameters (https://dart.dev/tools/linter-rules/always_require_non_null_named_parameters) | ||||||
|  |  - **REMOVED** avoid_returning_null_for_future (https://dart.dev/tools/linter-rules/avoid_returning_null_for_future) | ||||||
|  |  - **REMOVED** iterable_contains_unrelated_type (https://dart.dev/tools/linter-rules/iterable_contains_unrelated_type) | ||||||
|  |  - **REMOVED** list_remove_unrelated_type (https://dart.dev/tools/linter-rules/list_remove_unrelated_type) | ||||||
|  |  - **REMOVED** prefer_equal_for_default_values (https://dart.dev/tools/linter-rules/prefer_equal_for_default_values) | ||||||
|  | 
 | ||||||
| ## 2.5.0 | ## 2.5.0 | ||||||
| 
 | 
 | ||||||
|  - **FIX**(analysis): remove depencies sort. (4e3b288e) |  - **FIX**(analysis): remove depencies sort. (4e3b288e) | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ | |||||||
| 
 | 
 | ||||||
|  |  | ||||||
| 
 | 
 | ||||||
| This package provides lint rules for Dart and Flutter which are used at  [Wyatt Studio](https://wyatt-studio.fr). For more information, see the complete list of options in **lib/analysis_options.2.5.0.yaml**. | This package provides lint rules for Dart and Flutter which are used at  [Wyatt Studio](https://wyatt-studio.fr). For more information, see the complete list of options in **lib/analysis_options.2.6.0.yaml**. | ||||||
| 
 | 
 | ||||||
| **Note**: This package was heavily inspired by [pedantic](https://github.com/dart-lang/pedantic), [Very Good Analysis](https://github.com/VeryGoodOpenSource/very_good_analysis) and the official [flutter_lints](https://pub.dev/packages/flutter_lints). | **Note**: This package was heavily inspired by [pedantic](https://github.com/dart-lang/pedantic), [Very Good Analysis](https://github.com/VeryGoodOpenSource/very_good_analysis) and the official [flutter_lints](https://pub.dev/packages/flutter_lints). | ||||||
| 
 | 
 | ||||||
| @ -29,7 +29,7 @@ This package provides lint rules for Dart and Flutter which are used at  [Wyatt | |||||||
| Using CLI: | Using CLI: | ||||||
| 
 | 
 | ||||||
| ```sh | ```sh | ||||||
| dart pub add wyatt_analysis:2.5.0 --dev --hosted-url=https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ | dart pub add wyatt_analysis:2.6.0 --dev --hosted-url=https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Usage | ## Usage | ||||||
| @ -39,7 +39,7 @@ To use the lints, add a dependency in your `pubspec.yaml` : | |||||||
| ```yaml | ```yaml | ||||||
| wyatt_analysis: | wyatt_analysis: | ||||||
|     hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ |     hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ | ||||||
|     version: 2.5.0 |     version: 2.6.0 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Then, add an include in `analysis_options.yaml` : | Then, add an include in `analysis_options.yaml` : | ||||||
| @ -57,13 +57,13 @@ include: package:wyatt_analysis/analysis_options.flutter.yaml | |||||||
| If you wish to restrict the lint version, specify a version of `analysis_options.yaml` instead: | If you wish to restrict the lint version, specify a version of `analysis_options.yaml` instead: | ||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| include: package:wyatt_analysis/analysis_options.flutter.2.5.0.yaml | include: package:wyatt_analysis/analysis_options.flutter.2.6.0.yaml | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| If you just want **Dart** version: | If you just want **Dart** version: | ||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| include: package:wyatt_analysis/analysis_options.2.5.0.yaml | include: package:wyatt_analysis/analysis_options.2.6.0.yaml | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Suppressing Lints | ## Suppressing Lints | ||||||
| @ -117,12 +117,44 @@ To indicate your project is using `wyatt_analysis` → [![style: wyatt analysis] | |||||||
| When you want to create a new version of the plugin. Before any modification, execute the following command to create new files: | When you want to create a new version of the plugin. Before any modification, execute the following command to create new files: | ||||||
| 
 | 
 | ||||||
| ```sh | ```sh | ||||||
| ./new_version.sh <new_version> | ./tools/new_version.sh <version> | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| The previous version is automatically detected thanks to the `.latest_version` file. | The previous version is automatically retrieved from the `pubspec.yaml` file. | ||||||
| So `.latest_version` needs to be versioned! | 
 | ||||||
|  | This script will create the following files: | ||||||
|  | * `lib/analysis_options.<version>.yaml` | ||||||
|  | * `lib/analysis_options.flutter.<version>.yaml` | ||||||
|  | 
 | ||||||
|  | And update the following files: | ||||||
|  | * `README.md` | ||||||
|  | * `pubspec.yaml` | ||||||
|  | * `lib/analysis_options.yaml` | ||||||
|  | * `lib/analysis_options.flutter.yaml` | ||||||
|  | * `lib/wyatt_analysis.dart` | ||||||
|  | 
 | ||||||
|  | Then, you can use the following command to retrieve latest available lints from the official linter. | ||||||
|  | 
 | ||||||
|  | ```sh | ||||||
|  | ./tools/check_rules.sh | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | After that, you can modify the files `lib/analysis_options.<version>.yaml` and `lib/analysis_options.flutter.<version>.yaml` to add new lints or remove some. | ||||||
|  | 
 | ||||||
|  | Then you can sort the lints with the following command: | ||||||
|  | 
 | ||||||
|  | ```sh | ||||||
|  | ./tools/sort_rules.sh | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Finally, you can generate the changelog with the following command: | ||||||
|  | 
 | ||||||
|  | ```sh | ||||||
|  | ./tools/generate_changelog.sh <old_version> | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | The new version is automatically retrieved from the `pubspec.yaml` file. But **you have to specify** the previous version. | ||||||
| 
 | 
 | ||||||
| ## Notes | ## Notes | ||||||
| 
 | 
 | ||||||
| You can explore every lint rules [here](https://dart-lang.github.io/linter/lints/). | You can explore every lint rules [here](https://dart.dev/tools/linter-rules). | ||||||
|  | |||||||
							
								
								
									
										232
									
								
								packages/wyatt_analysis/lib/analysis_options.2.6.0.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										232
									
								
								packages/wyatt_analysis/lib/analysis_options.2.6.0.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,232 @@ | |||||||
|  | # Copyright (C) 2023 WYATT GROUP | ||||||
|  | # Please see the AUTHORS file for details. | ||||||
|  | # | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # any later version. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | analyzer: | ||||||
|  |   language: | ||||||
|  |     strict-casts: true | ||||||
|  |     strict-inference: true | ||||||
|  |     strict-raw-types: true | ||||||
|  |   errors: | ||||||
|  |     todo: ignore | ||||||
|  |     close_sinks: ignore | ||||||
|  |     missing_required_param: error | ||||||
|  |     missing_return: error | ||||||
|  |     record_literal_one_positional_no_trailing_comma: error | ||||||
|  |     collection_methods_unrelated_type: warning | ||||||
|  |     unrelated_type_equality_checks: warning | ||||||
|  |   exclude: | ||||||
|  |     - lib/l10n/** | ||||||
|  |     - lib/generated/** | ||||||
|  |     - lib/gen/** | ||||||
|  |     - lib/generated_plugin_registrant.dart | ||||||
|  |     - test/.test_coverage.dart | ||||||
|  |     - "**/*.g.dart" | ||||||
|  |     - "**/*.freezed.dart" | ||||||
|  | linter: | ||||||
|  |   rules: | ||||||
|  |     - always_declare_return_types | ||||||
|  |     - always_put_control_body_on_new_line | ||||||
|  |     - always_put_required_named_parameters_first | ||||||
|  |     - always_use_package_imports | ||||||
|  |     - annotate_overrides | ||||||
|  |     - annotate_redeclares | ||||||
|  |     - avoid_bool_literals_in_conditional_expressions | ||||||
|  |     - avoid_catching_errors | ||||||
|  |     - avoid_double_and_int_checks | ||||||
|  |     - avoid_dynamic_calls | ||||||
|  |     - avoid_empty_else | ||||||
|  |     - avoid_equals_and_hash_code_on_mutable_classes | ||||||
|  |     - avoid_escaping_inner_quotes | ||||||
|  |     - avoid_field_initializers_in_const_classes | ||||||
|  |     - avoid_final_parameters | ||||||
|  |     - avoid_function_literals_in_foreach_calls | ||||||
|  |     - avoid_init_to_null | ||||||
|  |     - avoid_js_rounded_ints | ||||||
|  |     - avoid_multiple_declarations_per_line | ||||||
|  |     - avoid_null_checks_in_equality_operators | ||||||
|  |     - avoid_positional_boolean_parameters | ||||||
|  |     - avoid_private_typedef_functions | ||||||
|  |     - avoid_redundant_argument_values | ||||||
|  |     - avoid_relative_lib_imports | ||||||
|  |     - avoid_renaming_method_parameters | ||||||
|  |     - avoid_return_types_on_setters | ||||||
|  |     - avoid_returning_null | ||||||
|  |     - avoid_returning_null_for_void | ||||||
|  |     - avoid_returning_this | ||||||
|  |     - avoid_setters_without_getters | ||||||
|  |     - avoid_shadowing_type_parameters | ||||||
|  |     - avoid_single_cascade_in_expression_statements | ||||||
|  |     - avoid_slow_async_io | ||||||
|  |     - avoid_type_to_string | ||||||
|  |     - avoid_types_as_parameter_names | ||||||
|  |     - avoid_types_on_closure_parameters | ||||||
|  |     - avoid_unused_constructor_parameters | ||||||
|  |     - avoid_void_async | ||||||
|  |     - await_only_futures | ||||||
|  |     - camel_case_extensions | ||||||
|  |     - camel_case_types | ||||||
|  |     - cancel_subscriptions | ||||||
|  |     - cascade_invocations | ||||||
|  |     - cast_nullable_to_non_nullable | ||||||
|  |     - collection_methods_unrelated_type | ||||||
|  |     - combinators_ordering | ||||||
|  |     - comment_references | ||||||
|  |     - conditional_uri_does_not_exist | ||||||
|  |     - constant_identifier_names | ||||||
|  |     - control_flow_in_finally | ||||||
|  |     - curly_braces_in_flow_control_structures | ||||||
|  |     - dangling_library_doc_comments | ||||||
|  |     - depend_on_referenced_packages | ||||||
|  |     - deprecated_consistency | ||||||
|  |     - deprecated_member_use_from_same_package | ||||||
|  |     - directives_ordering | ||||||
|  |     - empty_catches | ||||||
|  |     - empty_constructor_bodies | ||||||
|  |     - empty_statements | ||||||
|  |     - eol_at_end_of_file | ||||||
|  |     - exhaustive_cases | ||||||
|  |     - file_names | ||||||
|  |     - flutter_style_todos | ||||||
|  |     - hash_and_equals | ||||||
|  |     - implementation_imports | ||||||
|  |     - implicit_call_tearoffs | ||||||
|  |     - implicit_reopen | ||||||
|  |     - invalid_case_patterns | ||||||
|  |     - join_return_with_assignment | ||||||
|  |     - leading_newlines_in_multiline_strings | ||||||
|  |     - library_names | ||||||
|  |     - library_prefixes | ||||||
|  |     - library_private_types_in_public_api | ||||||
|  |     - lines_longer_than_80_chars | ||||||
|  |     - literal_only_boolean_expressions | ||||||
|  |     - matching_super_parameters | ||||||
|  |     - missing_whitespace_between_adjacent_strings | ||||||
|  |     - no_adjacent_strings_in_list | ||||||
|  |     - no_default_cases | ||||||
|  |     - no_duplicate_case_values | ||||||
|  |     - no_leading_underscores_for_library_prefixes | ||||||
|  |     - no_leading_underscores_for_local_identifiers | ||||||
|  |     - no_literal_bool_comparisons | ||||||
|  |     - no_runtimeType_toString | ||||||
|  |     - no_self_assignments | ||||||
|  |     - no_wildcard_variable_uses | ||||||
|  |     - non_constant_identifier_names | ||||||
|  |     - noop_primitive_operations | ||||||
|  |     - null_check_on_nullable_type_parameter | ||||||
|  |     - null_closures | ||||||
|  |     - one_member_abstracts | ||||||
|  |     - only_throw_errors | ||||||
|  |     - overridden_fields | ||||||
|  |     - package_api_docs | ||||||
|  |     - package_names | ||||||
|  |     - package_prefixed_library_names | ||||||
|  |     - parameter_assignments | ||||||
|  |     - prefer_adjacent_string_concatenation | ||||||
|  |     - prefer_asserts_in_initializer_lists | ||||||
|  |     - prefer_asserts_with_message | ||||||
|  |     - prefer_collection_literals | ||||||
|  |     - prefer_conditional_assignment | ||||||
|  |     - prefer_const_constructors | ||||||
|  |     - prefer_const_constructors_in_immutables | ||||||
|  |     - prefer_const_declarations | ||||||
|  |     - prefer_const_literals_to_create_immutables | ||||||
|  |     - prefer_constructors_over_static_methods | ||||||
|  |     - prefer_contains | ||||||
|  |     - prefer_expression_function_bodies | ||||||
|  |     - prefer_final_fields | ||||||
|  |     - prefer_final_in_for_each | ||||||
|  |     - prefer_final_locals | ||||||
|  |     - prefer_final_parameters | ||||||
|  |     - prefer_for_elements_to_map_fromIterable | ||||||
|  |     - prefer_foreach | ||||||
|  |     - prefer_function_declarations_over_variables | ||||||
|  |     - prefer_generic_function_type_aliases | ||||||
|  |     - prefer_if_elements_to_conditional_expressions | ||||||
|  |     - prefer_if_null_operators | ||||||
|  |     - prefer_initializing_formals | ||||||
|  |     - prefer_inlined_adds | ||||||
|  |     - prefer_int_literals | ||||||
|  |     - prefer_interpolation_to_compose_strings | ||||||
|  |     - prefer_is_empty | ||||||
|  |     - prefer_is_not_empty | ||||||
|  |     - prefer_is_not_operator | ||||||
|  |     - prefer_iterable_whereType | ||||||
|  |     - prefer_mixin | ||||||
|  |     - prefer_null_aware_method_calls | ||||||
|  |     - prefer_null_aware_operators | ||||||
|  |     - prefer_single_quotes | ||||||
|  |     - prefer_spread_collections | ||||||
|  |     - prefer_typing_uninitialized_variables | ||||||
|  |     - prefer_void_to_null | ||||||
|  |     - provide_deprecation_message | ||||||
|  |     - recursive_getters | ||||||
|  |     - require_trailing_commas | ||||||
|  |     - slash_for_doc_comments | ||||||
|  |     - sort_constructors_first | ||||||
|  |     - sort_unnamed_constructors_first | ||||||
|  |     - test_types_in_equals | ||||||
|  |     - throw_in_finally | ||||||
|  |     - tighten_type_of_initializing_formals | ||||||
|  |     - type_annotate_public_apis | ||||||
|  |     - type_init_formals | ||||||
|  |     - type_literal_in_constant_pattern | ||||||
|  |     - unawaited_futures | ||||||
|  |     - unnecessary_await_in_return | ||||||
|  |     - unnecessary_brace_in_string_interps | ||||||
|  |     - unnecessary_breaks | ||||||
|  |     - unnecessary_const | ||||||
|  |     - unnecessary_constructor_name | ||||||
|  |     - unnecessary_getters_setters | ||||||
|  |     - unnecessary_lambdas | ||||||
|  |     - unnecessary_late | ||||||
|  |     - unnecessary_library_directive | ||||||
|  |     - unnecessary_new | ||||||
|  |     - unnecessary_null_aware_assignments | ||||||
|  |     - unnecessary_null_aware_operator_on_extension_on_nullable | ||||||
|  |     - unnecessary_null_checks | ||||||
|  |     - unnecessary_null_in_if_null_operators | ||||||
|  |     - unnecessary_nullable_for_final_variable_declarations | ||||||
|  |     - unnecessary_overrides | ||||||
|  |     - unnecessary_parenthesis | ||||||
|  |     - unnecessary_raw_strings | ||||||
|  |     - unnecessary_statements | ||||||
|  |     - unnecessary_string_escapes | ||||||
|  |     - unnecessary_string_interpolations | ||||||
|  |     - unnecessary_this | ||||||
|  |     - unnecessary_to_list_in_spreads | ||||||
|  |     - unrelated_type_equality_checks | ||||||
|  |     - unsafe_html | ||||||
|  |     - use_enums | ||||||
|  |     - use_function_type_syntax_for_parameters | ||||||
|  |     - use_if_null_to_convert_nulls_to_bools | ||||||
|  |     - use_is_even_rather_than_modulo | ||||||
|  |     - use_late_for_private_fields_and_variables | ||||||
|  |     - use_named_constants | ||||||
|  |     - use_raw_strings | ||||||
|  |     - use_rethrow_when_possible | ||||||
|  |     - use_setters_to_change_properties | ||||||
|  |     - use_string_buffers | ||||||
|  |     - use_string_in_part_of_directives | ||||||
|  |     - use_super_parameters | ||||||
|  |     - use_test_throws_matchers | ||||||
|  |     - use_to_and_as_if_applicable | ||||||
|  |     - valid_regexps | ||||||
|  |     - void_checks | ||||||
|  | # Ignored rules (incompatible with some of our rules) | ||||||
|  | # - always_specify_types | ||||||
|  | # - prefer_double_quotes | ||||||
|  | # - prefer_relative_imports | ||||||
|  | # - unnecessary_final | ||||||
| @ -0,0 +1,32 @@ | |||||||
|  | # Copyright (C) 2023 WYATT GROUP | ||||||
|  | # Please see the AUTHORS file for details. | ||||||
|  | # | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # any later version. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | include: package:wyatt_analysis/analysis_options.2.6.0.yaml | ||||||
|  | linter: | ||||||
|  |   rules: | ||||||
|  |     - avoid_print | ||||||
|  |     - avoid_unnecessary_containers | ||||||
|  |     - avoid_web_libraries_in_flutter | ||||||
|  |     - diagnostic_describe_all_properties | ||||||
|  |     - no_logic_in_create_state | ||||||
|  |     - sized_box_for_whitespace | ||||||
|  |     - sized_box_shrink_expand | ||||||
|  |     - sort_child_properties_last | ||||||
|  |     - use_build_context_synchronously | ||||||
|  |     - use_colored_box | ||||||
|  |     - use_decorated_box | ||||||
|  |     - use_full_hex_values_for_flutter_colors | ||||||
|  |     - use_key_in_widget_constructors | ||||||
| @ -15,5 +15,5 @@ | |||||||
| # You should have received a copy of the GNU General Public License | # You should have received a copy of the GNU General Public License | ||||||
| # along with this program. If not, see <https://www.gnu.org/licenses/>. | # along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| include: package:wyatt_analysis/analysis_options.flutter.2.5.0.yaml | include: package:wyatt_analysis/analysis_options.flutter.2.6.0.yaml | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -15,5 +15,5 @@ | |||||||
| # You should have received a copy of the GNU General Public License | # You should have received a copy of the GNU General Public License | ||||||
| # along with this program. If not, see <https://www.gnu.org/licenses/>. | # along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
| 
 | 
 | ||||||
| include: package:wyatt_analysis/analysis_options.2.5.0.yaml | include: package:wyatt_analysis/analysis_options.2.6.0.yaml | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -18,4 +18,4 @@ | |||||||
| /// used internally at [Wyatt Studio](https://wyatt-studio.fr). | /// used internally at [Wyatt Studio](https://wyatt-studio.fr). | ||||||
| library wyatt_analysis; | library wyatt_analysis; | ||||||
| 
 | 
 | ||||||
| const String wyattAnalysisVersion = '2.5.0'; | const String wyattAnalysisVersion = '2.6.0'; | ||||||
|  | |||||||
| @ -1,142 +0,0 @@ | |||||||
| #!/usr/bin/env sh |  | ||||||
| 
 |  | ||||||
| # Copyright (C) 2022 WYATT GROUP |  | ||||||
| # Please see the AUTHORS file for details. |  | ||||||
| # |  | ||||||
| # This program is free software: you can redistribute it and/or modify |  | ||||||
| # it under the terms of the GNU General Public License as published by |  | ||||||
| # the Free Software Foundation, either version 3 of the License, or |  | ||||||
| # any later version. |  | ||||||
| # |  | ||||||
| # This program is distributed in the hope that it will be useful, |  | ||||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |  | ||||||
| # GNU General Public License for more details. |  | ||||||
| # |  | ||||||
| # You should have received a copy of the GNU General Public License |  | ||||||
| # along with this program. If not, see <https://www.gnu.org/licenses/>. |  | ||||||
| 
 |  | ||||||
| usage=" |  | ||||||
| usage: |  | ||||||
|     $(basename "$0") <new_version> -- create new analyzer files. |  | ||||||
| 
 |  | ||||||
| where: |  | ||||||
|     new_version: new version, for example \`2.4.0\`" |  | ||||||
| 
 |  | ||||||
| new=$1 |  | ||||||
| 
 |  | ||||||
| if [ -z "$new" ]; then |  | ||||||
|    echo "new_version cannot be null" |  | ||||||
|    echo "${usage}" |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| SCRIPT_PATH="${BASH_SOURCE:-$0}" |  | ||||||
| ABS_SCRIPT_PATH="$(realpath "${SCRIPT_PATH}")" |  | ||||||
| ABS_DIRECTORY="$(dirname "${ABS_SCRIPT_PATH}")" |  | ||||||
| 
 |  | ||||||
| LATEST_VERSION="${ABS_DIRECTORY}/.latest_version" |  | ||||||
| 
 |  | ||||||
| # Read latest version |  | ||||||
| if [ -e "$LATEST_VERSION" ]; then |  | ||||||
|    old=$(cat "$LATEST_VERSION") |  | ||||||
|    echo "> latest package version is: $old" |  | ||||||
|    echo "> new package version is: $new" |  | ||||||
| else |  | ||||||
|    echo "latest version is not set" |  | ||||||
|    echo "create a file named \`.latest_version\` in the root of the project" |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| LIB="${ABS_DIRECTORY}/lib/wyatt_analysis.dart" |  | ||||||
| OPTIONS="${ABS_DIRECTORY}/lib/analysis_options.yaml" |  | ||||||
| OLD_OPTIONS="${ABS_DIRECTORY}/lib/analysis_options.${old}.yaml" |  | ||||||
| NEW_OPTIONS="${ABS_DIRECTORY}/lib/analysis_options.${new}.yaml" |  | ||||||
| 
 |  | ||||||
| OPTIONS_FLUTTER="${ABS_DIRECTORY}/lib/analysis_options.flutter.yaml" |  | ||||||
| OLD_OPTIONS_FLUTTER="${ABS_DIRECTORY}/lib/analysis_options.flutter.${old}.yaml" |  | ||||||
| NEW_OPTIONS_FLUTTER="${ABS_DIRECTORY}/lib/analysis_options.flutter.${new}.yaml" |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| if [ ! -e "$OLD_OPTIONS" ]; then |  | ||||||
|    echo "analysis_options.${old}.yaml doesn't exists" |  | ||||||
|    echo "${usage}" |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| if [ ! -e "$OLD_OPTIONS_FLUTTER" ]; then |  | ||||||
|    echo "analysis_options.flutter.${old}.yaml doesn't exists" |  | ||||||
|    echo "${usage}" |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| if [ -e "$NEW_OPTIONS" ]; then |  | ||||||
|    echo "analysis_options.${new}.yaml already exists" |  | ||||||
|    echo "${usage}" |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| if [ -e "$NEW_OPTIONS_FLUTTER" ]; then |  | ||||||
|    echo "analysis_options.flutter.${old}.yaml already exists" |  | ||||||
|    echo "${usage}" |  | ||||||
|    exit 1 |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| # Copy previous version files |  | ||||||
| cp "${OLD_OPTIONS}" "${NEW_OPTIONS}" |  | ||||||
| cp "${OLD_OPTIONS_FLUTTER}" "${NEW_OPTIONS_FLUTTER}" |  | ||||||
| 
 |  | ||||||
| # Search and replace old version string occurences in new files |  | ||||||
| sed -e "s/${old}/${new}/g" "${NEW_OPTIONS_FLUTTER}" > tempfile.tmp |  | ||||||
| mv -f tempfile.tmp "${NEW_OPTIONS_FLUTTER}" |  | ||||||
| 
 |  | ||||||
| sed -e "s/${old}/${new}/g" "${LIB}" > tempfile.tmp |  | ||||||
| mv -f tempfile.tmp "${LIB}" |  | ||||||
| 
 |  | ||||||
| sed -e "s/${old}/${new}/g" "README.md" > tempfile.tmp |  | ||||||
| mv -f tempfile.tmp "README.md" |  | ||||||
| 
 |  | ||||||
| echo " |  | ||||||
| # Copyright (C) 2023 WYATT GROUP |  | ||||||
| # Please see the AUTHORS file for details. |  | ||||||
| # |  | ||||||
| # This program is free software: you can redistribute it and/or modify |  | ||||||
| # it under the terms of the GNU General Public License as published by |  | ||||||
| # the Free Software Foundation, either version 3 of the License, or |  | ||||||
| # any later version. |  | ||||||
| # |  | ||||||
| # This program is distributed in the hope that it will be useful, |  | ||||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |  | ||||||
| # GNU General Public License for more details. |  | ||||||
| # |  | ||||||
| # You should have received a copy of the GNU General Public License |  | ||||||
| # along with this program. If not, see <https://www.gnu.org/licenses/>. |  | ||||||
| 
 |  | ||||||
| include: package:wyatt_analysis/analysis_options.${new}.yaml |  | ||||||
| " > "${OPTIONS}" |  | ||||||
| 
 |  | ||||||
| echo " |  | ||||||
| # Copyright (C) 2023 WYATT GROUP |  | ||||||
| # Please see the AUTHORS file for details. |  | ||||||
| # |  | ||||||
| # This program is free software: you can redistribute it and/or modify |  | ||||||
| # it under the terms of the GNU General Public License as published by |  | ||||||
| # the Free Software Foundation, either version 3 of the License, or |  | ||||||
| # any later version. |  | ||||||
| # |  | ||||||
| # This program is distributed in the hope that it will be useful, |  | ||||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |  | ||||||
| # GNU General Public License for more details. |  | ||||||
| # |  | ||||||
| # You should have received a copy of the GNU General Public License |  | ||||||
| # along with this program. If not, see <https://www.gnu.org/licenses/>. |  | ||||||
| 
 |  | ||||||
| include: package:wyatt_analysis/analysis_options.flutter.${new}.yaml |  | ||||||
| " > "${OPTIONS_FLUTTER}" |  | ||||||
| 
 |  | ||||||
| # Update latest version |  | ||||||
| echo "${new}" > "$LATEST_VERSION" |  | ||||||
| 
 |  | ||||||
| exit 0 |  | ||||||
| @ -17,7 +17,7 @@ | |||||||
| name: wyatt_analysis | name: wyatt_analysis | ||||||
| description: Lint rules for Dart and Flutter used internally at Wyatt Studio. | description: Lint rules for Dart and Flutter used internally at Wyatt Studio. | ||||||
| repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis | repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis | ||||||
| version: 2.5.0 | version: 2.6.0 | ||||||
| 
 | 
 | ||||||
| publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub | publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										105
									
								
								packages/wyatt_analysis/tools/check_rules.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										105
									
								
								packages/wyatt_analysis/tools/check_rules.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,105 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | # Copyright (C) 2023 WYATT GROUP | ||||||
|  | # Please see the AUTHORS file for details. | ||||||
|  | # | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # any later version. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | # This script scrapes the latest version of the ruleset from the | ||||||
|  | # official Dart repository and tests it against the latest version of | ||||||
|  | # the Wyatt Analysis ruleset. | ||||||
|  | 
 | ||||||
|  | basename=$(basename "$0") | ||||||
|  | basepath=$(dirname "$0") | ||||||
|  | official_ruleset_url="https://raw.githubusercontent.com/dart-lang/sdk/main/pkg/linter/example/all.yaml" | ||||||
|  | 
 | ||||||
|  | red=$(tput setaf 1) | ||||||
|  | blue=$(tput setaf 4) | ||||||
|  | yellow=$(tput setaf 3) | ||||||
|  | reset=$(tput sgr0) | ||||||
|  | 
 | ||||||
|  | # Check for dependencies. | ||||||
|  | if ! command -v yq &>/dev/null; then | ||||||
|  |   echo "yq could not be found. Please install it and try again." | ||||||
|  |   echo "https://github.com/mikefarah/yq" | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Check for arguments, if no arguments read latest version from pubspec.yaml. | ||||||
|  | if [ $# -eq 0 ]; then | ||||||
|  |   wyatt_analysis_version=$(yq eval '.version' "${basepath}/../pubspec.yaml") | ||||||
|  | else | ||||||
|  |   wyatt_analysis_version=$1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Read latest version | ||||||
|  | wyatt_analysis_version=$(yq eval '.version' "${basepath}/../pubspec.yaml") | ||||||
|  | 
 | ||||||
|  | # Check if the version of the Wyatt Analysis ruleset is valid by checking if the file exists. | ||||||
|  | if [ ! -f "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml" ]; then | ||||||
|  |   echo "Wyatt Analysis version $wyatt_analysis_version could not be found." | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | echo "Found Wyatt Analysis version $wyatt_analysis_version" | ||||||
|  | 
 | ||||||
|  | # Generate temporary directory. | ||||||
|  | tmp_dir=$(mktemp -d) | ||||||
|  | 
 | ||||||
|  | # Download the official ruleset. | ||||||
|  | curl -s "$official_ruleset_url" >"$tmp_dir/official.yaml" | ||||||
|  | 
 | ||||||
|  | # List yaml elements in the official ruleset, "linter.rules" and save it in an array. | ||||||
|  | official_rules=($(yq eval '.linter.rules | .[]' "$tmp_dir/official.yaml")) | ||||||
|  | echo "Finding differences between the official ruleset and the Wyatt Analysis ruleset..." | ||||||
|  | echo "This may take a while..." | ||||||
|  | 
 | ||||||
|  | # Merges the wyatt dart analysis ruleset with the wyatt flutter analysis ruleset. | ||||||
|  | yq ea '. as $item ireduce ({}; . *+ $item)' "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml" "$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml" >"$tmp_dir/wyatt.yaml" | ||||||
|  | 
 | ||||||
|  | # List yaml elements in the Wyatt Analysis ruleset, "linter.rules" and save it in an array. | ||||||
|  | wyatt_rules=($(yq eval '.linter.rules | .[]' "$tmp_dir/wyatt.yaml")) | ||||||
|  | 
 | ||||||
|  | # Read merged files, and list all ignored rules (starting with a # -). | ||||||
|  | ignored_rules=($(grep -oP '(?<=# - ).*' "$tmp_dir/wyatt.yaml")) | ||||||
|  | 
 | ||||||
|  | echo "Found $(echo "${official_rules[@]}" | wc -w) rules in the official ruleset." | ||||||
|  | echo "Found $(echo "${wyatt_rules[@]}" | wc -w) rules in the Wyatt Analysis ruleset." | ||||||
|  | echo "Found $(echo "${ignored_rules[@]}" | wc -w) ignored rules in the Wyatt Analysis ruleset." | ||||||
|  | 
 | ||||||
|  | # Iterate over the official ruleset. | ||||||
|  | for rule in "${official_rules[@]}"; do | ||||||
|  |   # Check if the rule is in the Wyatt Analysis ruleset. | ||||||
|  |   if ! grep -q "$rule" "$tmp_dir/wyatt.yaml"; then | ||||||
|  |     echo "${red}+ $rule${reset} (https://dart.dev/tools/linter-rules/$rule)" | ||||||
|  |   fi | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # Iterate over the Wyatt Analysis ruleset and print the rules that are not in the official ruleset. | ||||||
|  | for rule in "${wyatt_rules[@]}"; do | ||||||
|  |   # Check if the rule is in the official ruleset. | ||||||
|  |   if ! grep -q "$rule" "$tmp_dir/official.yaml"; then | ||||||
|  |     echo "${blue}- $rule${reset} (https://dart.dev/tools/linter-rules/$rule)" | ||||||
|  |   fi | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # Iterate over the ignored rules and print them. | ||||||
|  | for rule in "${ignored_rules[@]}"; do | ||||||
|  |   echo "${yellow}~ $rule${reset} (https://dart.dev/tools/linter-rules/$rule)" | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # Remove temporary directory. | ||||||
|  | rm -rf "$tmp_dir" | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
							
								
								
									
										109
									
								
								packages/wyatt_analysis/tools/generate_changelog.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										109
									
								
								packages/wyatt_analysis/tools/generate_changelog.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,109 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | # Copyright (C) 2023 WYATT GROUP | ||||||
|  | # Please see the AUTHORS file for details. | ||||||
|  | # | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # any later version. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | basename=$(basename "$0") | ||||||
|  | basepath=$(dirname "$0") | ||||||
|  | 
 | ||||||
|  | # Check for dependencies. | ||||||
|  | if ! command -v yq &>/dev/null; then | ||||||
|  |   echo "yq could not be found. Please install it and try again." | ||||||
|  |   echo "https://github.com/mikefarah/yq" | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Check for arguments, | ||||||
|  | # it should be the version of the old ruleset that you want to compare with the new ruleset. | ||||||
|  | 
 | ||||||
|  | if [ $# -eq 0 ]; then | ||||||
|  |   echo "Please provide the version of the old ruleset that you want to compare with the new ruleset." | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Read the version of the old ruleset from the arguments. | ||||||
|  | old_wyatt_analysis_version=$1 | ||||||
|  | 
 | ||||||
|  | # Read the version of the new ruleset from pubspec.yaml. | ||||||
|  | new_wyatt_analysis_version=$(yq eval '.version' "${basepath}/../pubspec.yaml") | ||||||
|  | 
 | ||||||
|  | # Check if the version of the Wyatt Analysis ruleset is valid by checking if the file exists. | ||||||
|  | if [ ! -f "$basepath/../lib/analysis_options.$old_wyatt_analysis_version.yaml" ]; then | ||||||
|  |   echo "Wyatt Analysis version $old_wyatt_analysis_version could not be found." | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ ! -f "$basepath/../lib/analysis_options.$new_wyatt_analysis_version.yaml" ]; then | ||||||
|  |   echo "Wyatt Analysis version $new_wyatt_analysis_version could not be found." | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | echo "Found Wyatt Analysis version $old_wyatt_analysis_version and $new_wyatt_analysis_version" | ||||||
|  | 
 | ||||||
|  | # Generate temporary directory. | ||||||
|  | tmp_dir=$(mktemp -d) | ||||||
|  | 
 | ||||||
|  | # Merges the wyatt dart analysis ruleset with the wyatt flutter analysis ruleset. | ||||||
|  | yq ea '. as $item ireduce ({}; . *+ $item)' "$basepath/../lib/analysis_options.$old_wyatt_analysis_version.yaml" "$basepath/../lib/analysis_options.flutter.$old_wyatt_analysis_version.yaml" >"$tmp_dir/old_wyatt.yaml" | ||||||
|  | 
 | ||||||
|  | yq ea '. as $item ireduce ({}; . *+ $item)' "$basepath/../lib/analysis_options.$new_wyatt_analysis_version.yaml" "$basepath/../lib/analysis_options.flutter.$new_wyatt_analysis_version.yaml" >"$tmp_dir/new_wyatt.yaml" | ||||||
|  | 
 | ||||||
|  | # List yaml elements in the old ruleset, "linter.rules" and save it in an array. | ||||||
|  | old_wyatt_rules=($(yq eval '.linter.rules | .[]' "$tmp_dir/old_wyatt.yaml")) | ||||||
|  | 
 | ||||||
|  | # List yaml elements in the new ruleset, "linter.rules" and save it in an array. | ||||||
|  | new_wyatt_rules=($(yq eval '.linter.rules | .[]' "$tmp_dir/new_wyatt.yaml")) | ||||||
|  | 
 | ||||||
|  | # List all the rules that are in the old ruleset but not in the new ruleset. | ||||||
|  | removed_rules=($(comm -23 <(printf '%s\n' "${old_wyatt_rules[@]}" | sort) <(printf '%s\n' "${new_wyatt_rules[@]}" | sort))) | ||||||
|  | 
 | ||||||
|  | # List all the rules that are in the new ruleset but not in the old ruleset. | ||||||
|  | added_rules=($(comm -13 <(printf '%s\n' "${old_wyatt_rules[@]}" | sort) <(printf '%s\n' "${new_wyatt_rules[@]}" | sort))) | ||||||
|  | 
 | ||||||
|  | # Generate markdown file. | ||||||
|  | 
 | ||||||
|  | echo "## ${new_wyatt_analysis_version}" >"$tmp_dir/CHANGELOG.md" | ||||||
|  | echo "" >>"$tmp_dir/CHANGELOG.md" | ||||||
|  | 
 | ||||||
|  | # Iterate over the added rules and print them in the markdown file. | ||||||
|  | for rule in "${added_rules[@]}"; do | ||||||
|  |   echo " - **ADDED** $rule (https://dart.dev/tools/linter-rules/$rule)" >>"$tmp_dir/CHANGELOG.md" | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # Iterate over the removed rules and print them in the markdown file. | ||||||
|  | for rule in "${removed_rules[@]}"; do | ||||||
|  |   echo " - **REMOVED** $rule (https://dart.dev/tools/linter-rules/$rule)" >>"$tmp_dir/CHANGELOG.md" | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | echo "" >>"$tmp_dir/CHANGELOG.md" | ||||||
|  | 
 | ||||||
|  | # Print the contents of the markdown file. | ||||||
|  | cat "$tmp_dir/CHANGELOG.md" | ||||||
|  | 
 | ||||||
|  | # Ask the user if they want to add the changes to the CHANGELOG.md file. | ||||||
|  | read -p "Do you want to add the changes to the CHANGELOG.md file? (y/n) " -n 1 -r | ||||||
|  | 
 | ||||||
|  | if [[ $REPLY =~ ^[Yy]$ ]]; then | ||||||
|  |   # Add the changes to the top of the CHANGELOG.md file. | ||||||
|  |   cat "$tmp_dir/CHANGELOG.md" "$basepath/../CHANGELOG.md" >"$tmp_dir/CHANGELOG.md.tmp" | ||||||
|  |   cp -f "$tmp_dir/CHANGELOG.md.tmp" "$basepath/../CHANGELOG.md" | ||||||
|  |   rm -f "$tmp_dir/CHANGELOG.md.tmp" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Remove temporary directory. | ||||||
|  | rm -rf "$tmp_dir" | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
							
								
								
									
										98
									
								
								packages/wyatt_analysis/tools/new_version.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										98
									
								
								packages/wyatt_analysis/tools/new_version.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,98 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | # Copyright (C) 2023 WYATT GROUP | ||||||
|  | # Please see the AUTHORS file for details. | ||||||
|  | # | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # any later version. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | basename=$(basename "$0") | ||||||
|  | basepath=$(dirname "$0") | ||||||
|  | 
 | ||||||
|  | # Check for arguments, first argument should be wyatt_analysis_version. | ||||||
|  | if [ $# -eq 0 ]; then | ||||||
|  |    echo "Usage: $basename <wyatt_analysis_version>" | ||||||
|  |    exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | wyatt_analysis_version=$1 | ||||||
|  | 
 | ||||||
|  | # Check for dependencies. | ||||||
|  | if ! command -v yq &>/dev/null; then | ||||||
|  |    echo "yq could not be found. Please install it and try again." | ||||||
|  |    echo "https://github.com/mikefarah/yq" | ||||||
|  |    exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Read latest version | ||||||
|  | latest_version=$(yq eval '.version' "${basepath}/../pubspec.yaml") | ||||||
|  | echo "> latest package version is: $latest_version" | ||||||
|  | echo "> new package version is: $wyatt_analysis_version" | ||||||
|  | 
 | ||||||
|  | # Create array with all files that need to exist | ||||||
|  | files=( | ||||||
|  |    "${basepath}/../pubspec.yaml" | ||||||
|  |    "${basepath}/../README.md" | ||||||
|  |    "${basepath}/../lib/wyatt_analysis.dart" | ||||||
|  |    "${basepath}/../lib/analysis_options.yaml" | ||||||
|  |    "${basepath}/../lib/analysis_options.flutter.yaml" | ||||||
|  |    "${basepath}/../lib/analysis_options.${latest_version}.yaml" | ||||||
|  |    "${basepath}/../lib/analysis_options.flutter.${latest_version}.yaml" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | # Check if all files exist | ||||||
|  | for file in "${files[@]}"; do | ||||||
|  |    if [ ! -f "$file" ]; then | ||||||
|  |       echo "File ${file} doesn't exists" | ||||||
|  |       exit 1 | ||||||
|  |    fi | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # Create new analysis_options files | ||||||
|  | echo "Creating new analysis_options files" | ||||||
|  | cp "${basepath}/../lib/analysis_options.${latest_version}.yaml" "${basepath}/../lib/analysis_options.${wyatt_analysis_version}.yaml" | ||||||
|  | cp "${basepath}/../lib/analysis_options.flutter.${latest_version}.yaml" "${basepath}/../lib/analysis_options.flutter.${wyatt_analysis_version}.yaml" | ||||||
|  | 
 | ||||||
|  | # Update version in new analysis_options files | ||||||
|  | echo "Updating version in new analysis_options files" | ||||||
|  | sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../lib/analysis_options.${wyatt_analysis_version}.yaml" | ||||||
|  | rm "${basepath}/../lib/analysis_options.${wyatt_analysis_version}.yaml.bu" | ||||||
|  | sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../lib/analysis_options.flutter.${wyatt_analysis_version}.yaml" | ||||||
|  | rm "${basepath}/../lib/analysis_options.flutter.${wyatt_analysis_version}.yaml.bu" | ||||||
|  | 
 | ||||||
|  | # Update version in pubspec.yaml | ||||||
|  | echo "Updating version in pubspec.yaml" | ||||||
|  | sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../pubspec.yaml" | ||||||
|  | rm "${basepath}/../pubspec.yaml.bu" | ||||||
|  | 
 | ||||||
|  | # Update version in README.md | ||||||
|  | echo "Updating version in README.md" | ||||||
|  | sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../README.md" | ||||||
|  | rm "${basepath}/../README.md.bu" | ||||||
|  | 
 | ||||||
|  | # Update version in wyatt_analysis.dart | ||||||
|  | echo "Updating version in wyatt_analysis.dart" | ||||||
|  | sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../lib/wyatt_analysis.dart" | ||||||
|  | rm "${basepath}/../lib/wyatt_analysis.dart.bu" | ||||||
|  | 
 | ||||||
|  | # Update version in analysis_options.yaml | ||||||
|  | echo "Updating version in analysis_options.yaml" | ||||||
|  | sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../lib/analysis_options.yaml" | ||||||
|  | rm "${basepath}/../lib/analysis_options.yaml.bu" | ||||||
|  | 
 | ||||||
|  | # Update version in analysis_options.flutter.yaml | ||||||
|  | echo "Updating version in analysis_options.flutter.yaml" | ||||||
|  | sed -i.bu "s/${latest_version}/${wyatt_analysis_version}/g" "${basepath}/../lib/analysis_options.flutter.yaml" | ||||||
|  | rm "${basepath}/../lib/analysis_options.flutter.yaml.bu" | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
							
								
								
									
										59
									
								
								packages/wyatt_analysis/tools/sort_rules.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										59
									
								
								packages/wyatt_analysis/tools/sort_rules.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,59 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | # Copyright (C) 2023 WYATT GROUP | ||||||
|  | # Please see the AUTHORS file for details. | ||||||
|  | # | ||||||
|  | # This program is free software: you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation, either version 3 of the License, or | ||||||
|  | # any later version. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program. If not, see <https://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | basename=$(basename "$0") | ||||||
|  | basepath=$(dirname "$0") | ||||||
|  | 
 | ||||||
|  | # Check for dependencies. | ||||||
|  | if ! command -v yq &>/dev/null; then | ||||||
|  |   echo "yq could not be found. Please install it and try again." | ||||||
|  |   echo "https://github.com/mikefarah/yq" | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Check for arguments, if no arguments read latest version from pubspec.yaml. | ||||||
|  | if [ $# -eq 0 ]; then | ||||||
|  |   wyatt_analysis_version=$(yq eval '.version' "${basepath}/../pubspec.yaml") | ||||||
|  | else | ||||||
|  |   wyatt_analysis_version=$1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Check if the version of the Wyatt Analysis ruleset is valid by checking if the file exists. | ||||||
|  | if [ ! -f "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml" ]; then | ||||||
|  |   echo "Wyatt Analysis version $wyatt_analysis_version could not be found." | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | echo "Found Wyatt Analysis version $wyatt_analysis_version" | ||||||
|  | echo "Sorting rules..." | ||||||
|  | 
 | ||||||
|  | # Sort the rules in "lint.rules" alphabetically. | ||||||
|  | yq eval '.linter.rules |= sort_by(.)' "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml" >"$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml.tmp" | ||||||
|  | 
 | ||||||
|  | cp -f "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml.tmp" "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml" | ||||||
|  | 
 | ||||||
|  | rm -f "$basepath/../lib/analysis_options.$wyatt_analysis_version.yaml.tmp" | ||||||
|  | 
 | ||||||
|  | # Sort the rules in "lint.rules" alphabetically. | ||||||
|  | yq eval '.linter.rules |= sort_by(.)' "$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml" >"$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml.tmp" | ||||||
|  | 
 | ||||||
|  | cp -f "$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml.tmp" "$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml" | ||||||
|  | 
 | ||||||
|  | rm -f "$basepath/../lib/analysis_options.flutter.$wyatt_analysis_version.yaml.tmp" | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user