Skip to content

Commit a31e29a

Browse files
committed
WIP
1 parent 732755b commit a31e29a

16 files changed

+133
-785
lines changed

.devcontainer/devcontainer.json

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2+
// README at: https://github.com/devcontainers/templates/tree/main/src/alpine
3+
{
4+
"name": "Flutter (Stable)",
5+
"image": "skycoder42/devcontainers-flutter:latest",
6+
"customizations": {
7+
"vscode": {
8+
"extensions": [
9+
"blaxou.freezed",
10+
"dart-code.dart-code",
11+
"Gruntfuggly.todo-tree",
12+
"me-dutour-mathieu.vscode-github-actions",
13+
"mhutchie.git-graph",
14+
"ryanluker.vscode-coverage-gutters",
15+
"streetsidesoftware.code-spell-checker",
16+
"streetsidesoftware.code-spell-checker-german",
17+
"timonwong.shellcheck"
18+
],
19+
"settings": {
20+
"terminal.integrated.defaultProfile.linux": "zsh"
21+
}
22+
}
23+
},
24+
"features": {
25+
"ghcr.io/devcontainers-contrib/features/zsh-plugins:0": {
26+
"plugins": "git colorize vscode",
27+
"omzPlugins": "https://github.com/zsh-users/zsh-autosuggestions"
28+
}
29+
},
30+
"postCreateCommand": "flutter config --no-analytics && dart --disable-analytics && dart run ./tool/setup_hooks.dart"
31+
}

.github/workflows/ci.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ jobs:
1010
name: CI
1111
uses: Skycoder42/dart_test_tools/.github/workflows/dart.yml@main
1212
with:
13-
platforms: '["linux","windows","macos"]'
1413
buildRunner: true
15-
extendedAnalyzerArgs: --linter test-import # Do not run the lib-export linter
1614
unitTestPaths: test/unit
1715
coverageExclude: >-
1816
"**/*.g.dart"

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,5 @@ coverage_badge.svg
2828
# generated files
2929
*.freezed.dart
3030
*.g.dart
31+
32+
custom_lint.log

analysis_options.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
include: package:dart_test_tools/analysis_options_package.yaml
1+
include: package:dart_test_tools/package.yaml
22

33
analyzer:
4+
plugins:
5+
- custom_lint
46
exclude:
57
- "**.freezed.dart"
68
- "**.g.dart"
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import 'dart:async';
2+
3+
import 'package:meta/meta.dart';
4+
5+
import '../repo_entry.dart';
6+
import '../task_base.dart';
7+
import '../util/logger.dart';
8+
import '../util/program_runner.dart';
9+
import 'provider/task_provider.dart';
10+
11+
// coverage:ignore-start
12+
/// A riverpod provider for the custom-lint task.
13+
final customLintTaskProvider = TaskProvider(
14+
CustomLintTask._taskName,
15+
(ref) => CustomLintTask(
16+
programRunner: ref.watch(programRunnerProvider),
17+
logger: ref.watch(taskLoggerProvider),
18+
),
19+
);
20+
// coverage:ignore-end
21+
22+
/// @nodoc
23+
@internal
24+
class CustomLintTask implements RepoTask {
25+
static const _taskName = 'custom-lint';
26+
27+
final ProgramRunner _programRunner;
28+
29+
final TaskLogger _logger;
30+
31+
/// @nodoc
32+
const CustomLintTask({
33+
required ProgramRunner programRunner,
34+
required TaskLogger logger,
35+
}) : _programRunner = programRunner,
36+
_logger = logger;
37+
38+
@override
39+
String get taskName => _taskName;
40+
41+
@override
42+
bool get callForEmptyEntries => true;
43+
44+
@override
45+
bool canProcess(RepoEntry entry) => true;
46+
47+
@override
48+
Future<TaskResult> call(Iterable<RepoEntry> entries) async {
49+
final resultCompleter = Completer<TaskResult>();
50+
51+
_programRunner
52+
.stream('dart', const ['run', 'custom_lint'], runInShell: true)
53+
.listen(
54+
_logger.info,
55+
cancelOnError: true,
56+
onDone: () {
57+
if (resultCompleter.isCompleted) {
58+
return;
59+
}
60+
61+
resultCompleter.complete(TaskResult.accepted);
62+
},
63+
onError: (Object error, StackTrace stackTrace) {
64+
if (resultCompleter.isCompleted) {
65+
return;
66+
}
67+
68+
if (error is ProgramExitException && error.exitCode == 1) {
69+
resultCompleter.complete(TaskResult.rejected);
70+
} else {
71+
resultCompleter.completeError(error, stackTrace);
72+
}
73+
},
74+
);
75+
76+
return resultCompleter.future;
77+
}
78+
}

lib/src/tasks/lib_export_task.dart

Lines changed: 0 additions & 112 deletions
This file was deleted.

lib/src/tasks/provider/default_tasks_loader.dart

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@ import '../../config/pubspec_config_loader.dart';
44
import '../../util/logger.dart';
55
import '../../util/program_detector.dart';
66
import '../analyze_task.dart';
7+
import '../custom_lint_task.dart';
78
import '../flutter_compat_task.dart';
89
import '../format_task.dart';
9-
import '../lib_export_task.dart';
1010
import '../osv_scanner_task.dart';
1111
import '../outdated_task.dart';
1212
import '../pull_up_dependencies_task.dart';
13-
import '../test_import_task.dart';
1413
import 'task_loader.dart';
1514

1615
// coverage:ignore-start
@@ -48,14 +47,11 @@ class DefaultTasksLoader {
4847
///
4948
/// This will register the following task providers with the [TaskLoader]:
5049
/// - [formatTaskProvider]
51-
/// - [testImportTaskProvider]
50+
/// - [customLintTaskProvider]
5251
/// - [analyzeTaskProvider]
5352
/// - [outdatedTaskProvider]
5453
/// - [pullUpDependenciesTaskProvider]
5554
///
56-
/// If the project has it's `publish_to` unset or set to anything but `none`,
57-
/// the [libExportTaskProvider] is added as well.
58-
///
5955
/// If the project is not a flutter project, the [flutterCompatTaskProvider]
6056
/// is added as well.
6157
Future<void> registerDefaultTasks() async {
@@ -65,12 +61,8 @@ class DefaultTasksLoader {
6561

6662
_taskLoader
6763
..registerConfigurableTask(formatTaskProvider)
68-
..registerTask(testImportTaskProvider)
69-
..registerConfigurableTask(analyzeTaskProvider);
70-
71-
if (pubspecConfig.isPublished) {
72-
_taskLoader.registerTask(libExportTaskProvider);
73-
}
64+
..registerConfigurableTask(analyzeTaskProvider)
65+
..registerTask(customLintTaskProvider);
7466

7567
if (!pubspecConfig.isFlutterProject) {
7668
_taskLoader.registerTask(flutterCompatTaskProvider);

lib/src/tasks/test_import_task.dart

Lines changed: 0 additions & 94 deletions
This file was deleted.

0 commit comments

Comments
 (0)