This repository has been archived by the owner on Aug 6, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #22 from blendthink/feature/auto-diff-lint-rule
Add update-dependency-lints workflow
- Loading branch information
Showing
8 changed files
with
234 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# https://github.blog/changelog/2022-04-05-pub-beta-support-for-dependabot-version-updates/ | ||
# https://github.com/dependabot/dependabot-core/issues/2166 | ||
version: 2 | ||
enable-beta-ecosystems: true | ||
updates: | ||
- package-ecosystem: "pub" | ||
directory: "/" | ||
schedule: | ||
interval: "weekly" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
name: update dependency lints | ||
|
||
on: | ||
pull_request: | ||
paths: | ||
- pubspec.yaml | ||
|
||
jobs: | ||
check: | ||
runs-on: ubuntu-latest | ||
|
||
timeout-minutes: 10 | ||
|
||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions | ||
permissions: | ||
checks: write | ||
contents: write | ||
issues: write | ||
pull-requests: write | ||
|
||
steps: | ||
# https://github.com/actions/checkout | ||
- uses: actions/checkout@v3 | ||
|
||
- run: git fetch origin ${{ github.base_ref }} --depth=1 | ||
|
||
# https://github.com/dart-lang/setup-dart | ||
- uses: dart-lang/setup-dart@v1 | ||
|
||
# https://github.com/actions/cache | ||
- uses: actions/cache@v3 | ||
with: | ||
path: | | ||
${{ env.PUB_CACHE }} | ||
${{ github.workspace }}/.packages | ||
${{ github.workspace }}/.dart_tool/package_config.json | ||
key: ${{ runner.os }}-pubspec-${{ hashFiles(format('{0}{1}', github.workspace, '/pubspec.lock')) }} | ||
|
||
- name: update-dependency-lints | ||
run: | | ||
dart pub get | ||
dart tool/grind.dart update-dependency-lints \ | ||
--pub-cache=${{ env.PUB_CACHE }} \ | ||
--base=origin/${{ github.base_ref }} \ | ||
--head=HEAD | ||
# https://github.com/peter-evans/create-pull-request | ||
- name: create pull request | ||
uses: peter-evans/create-pull-request@v4 | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
commit-message: auto-update-dependency-lints | ||
title: Auto Update Dependency Lints | ||
body: | | ||
This was automatically generated by the [${{ github.workflow }}](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}). | ||
Update `lib/recommended.yaml` if necessary. | ||
base: ${{ github.head_ref }} | ||
branch: auto-update-dependency-lints | ||
branch-suffix: short-commit-hash |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import 'package:grinder/grinder.dart'; | ||
|
||
extension TaskArgsExt on TaskArgs { | ||
String requireOption(String name) => | ||
getOption(name) ?? | ||
fail("$name is required for command-line arguments. '--$name=xxx'."); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
import 'dart:io'; | ||
|
||
import 'package:grinder/grinder.dart'; | ||
|
||
import 'extension/task_args_ext.dart'; | ||
|
||
main(args) => grind(args); | ||
|
||
@Task('Update dependency lints.') | ||
updateDependencyLints() { | ||
final args = context.invocation.arguments; | ||
final pubCachePath = args.requireOption('pub-cache'); | ||
final baseBranch = args.requireOption('base'); | ||
final headBranch = args.requireOption('head'); | ||
|
||
final diff = run( | ||
'git', | ||
arguments: [ | ||
'diff', | ||
baseBranch, | ||
headBranch, | ||
'--', | ||
'pubspec.yaml', | ||
], | ||
); | ||
|
||
final hasLintsUpdate = diff.contains(RegExp(r'\+\s+flutter_lints:')); | ||
if (!hasLintsUpdate) { | ||
print('`flutter_lints` has not been updated.'); | ||
return; | ||
} | ||
|
||
final packagesDir = Directory('$pubCachePath/hosted/pub.dartlang.org'); | ||
packagesDir.listSync().forEach((e) { | ||
final dirPath = e.path; | ||
if (dirPath.contains(RegExp(r'.+/flutter_lints-.+'))) { | ||
File('$dirPath/lib/flutter.yaml') | ||
.copySync('tool/lints/flutter_lints/flutter.yaml'); | ||
} | ||
if (dirPath.contains(RegExp(r'.+/lints-.+'))) { | ||
File('$dirPath/lib/core.yaml').copySync('tool/lints/lints/core.yaml'); | ||
File('$dirPath/lib/recommended.yaml') | ||
.copySync('tool/lints/lints/recommended.yaml'); | ||
} | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Recommended lints for Flutter apps, packages, and plugins. | ||
|
||
include: package:lints/recommended.yaml | ||
|
||
linter: | ||
rules: | ||
- avoid_print | ||
- avoid_unnecessary_containers | ||
- avoid_web_libraries_in_flutter | ||
- no_logic_in_create_state | ||
- prefer_const_constructors | ||
- prefer_const_constructors_in_immutables | ||
- prefer_const_declarations | ||
- prefer_const_literals_to_create_immutables | ||
- sized_box_for_whitespace | ||
- sort_child_properties_last | ||
- use_build_context_synchronously | ||
- use_full_hex_values_for_flutter_colors | ||
- use_key_in_widget_constructors |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
linter: | ||
rules: | ||
- avoid_empty_else | ||
- avoid_relative_lib_imports | ||
- avoid_shadowing_type_parameters | ||
- avoid_types_as_parameter_names | ||
- await_only_futures | ||
- camel_case_extensions | ||
- camel_case_types | ||
- curly_braces_in_flow_control_structures | ||
- depend_on_referenced_packages | ||
- empty_catches | ||
- file_names | ||
- hash_and_equals | ||
- iterable_contains_unrelated_type | ||
- list_remove_unrelated_type | ||
- no_duplicate_case_values | ||
- non_constant_identifier_names | ||
- null_check_on_nullable_type_parameter | ||
- package_prefixed_library_names | ||
- prefer_generic_function_type_aliases | ||
- prefer_is_empty | ||
- prefer_is_not_empty | ||
- prefer_iterable_whereType | ||
- prefer_typing_uninitialized_variables | ||
- provide_deprecation_message | ||
- unnecessary_overrides | ||
- unrelated_type_equality_checks | ||
- valid_regexps | ||
- void_checks |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
include: package:lints/core.yaml | ||
|
||
linter: | ||
rules: | ||
- always_require_non_null_named_parameters | ||
- annotate_overrides | ||
- avoid_function_literals_in_foreach_calls | ||
- avoid_init_to_null | ||
- avoid_null_checks_in_equality_operators | ||
- avoid_renaming_method_parameters | ||
- avoid_return_types_on_setters | ||
- avoid_returning_null_for_void | ||
- avoid_single_cascade_in_expression_statements | ||
- constant_identifier_names | ||
- control_flow_in_finally | ||
- empty_constructor_bodies | ||
- empty_statements | ||
- exhaustive_cases | ||
- implementation_imports | ||
- library_names | ||
- library_prefixes | ||
- library_private_types_in_public_api | ||
- no_leading_underscores_for_library_prefixes | ||
- no_leading_underscores_for_local_identifiers | ||
- null_closures | ||
- overridden_fields | ||
- package_names | ||
- prefer_adjacent_string_concatenation | ||
- prefer_collection_literals | ||
- prefer_conditional_assignment | ||
- prefer_contains | ||
- prefer_equal_for_default_values | ||
- prefer_final_fields | ||
- prefer_for_elements_to_map_fromIterable | ||
- prefer_function_declarations_over_variables | ||
- prefer_if_null_operators | ||
- prefer_initializing_formals | ||
- prefer_inlined_adds | ||
- prefer_interpolation_to_compose_strings | ||
- prefer_is_not_operator | ||
- prefer_null_aware_operators | ||
- prefer_spread_collections | ||
- prefer_void_to_null | ||
- recursive_getters | ||
- slash_for_doc_comments | ||
- type_init_formals | ||
- unnecessary_brace_in_string_interps | ||
- unnecessary_const | ||
- unnecessary_constructor_name | ||
- unnecessary_getters_setters | ||
- unnecessary_late | ||
- unnecessary_new | ||
- unnecessary_null_aware_assignments | ||
- unnecessary_null_in_if_null_operators | ||
- unnecessary_nullable_for_final_variable_declarations | ||
- unnecessary_string_escapes | ||
- unnecessary_string_interpolations | ||
- unnecessary_this | ||
- use_function_type_syntax_for_parameters | ||
- use_rethrow_when_possible |