Skip to content

Commit 1ea2414

Browse files
committed
Support for multiple 'include:' entry in 'analysis_options.yaml'
1 parent 6f64b0d commit 1ea2414

File tree

3 files changed

+33
-14
lines changed

3 files changed

+33
-14
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## 0.23.3
22

3-
3+
- Support for multiple `include:` entry in `analysis_options.yaml`.
44

55
## 0.23.2
66

lib/src/sdk_env.dart

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -595,21 +595,28 @@ class ToolEnvironment {
595595
);
596596

597597
// extract the package name from the `include: package:<package>/path.yaml` entry in analysis options:
598-
String? includedPackage;
598+
final includedPackages = <String>{};
599599
final analysisOptionsFile = File(
600600
p.join(packageDir, 'analysis_options.yaml'),
601601
);
602602
if (await analysisOptionsFile.exists()) {
603+
void addPackageInclude(String includeValue) {
604+
final include = includeValue.trim();
605+
if (include.startsWith('package:')) {
606+
includedPackages.add(
607+
include.substring('package:'.length).split('/').first,
608+
);
609+
}
610+
}
611+
603612
final analysisOptions = await analysisOptionsFile.readAsString();
604613
final parsed = yamlToJson(analysisOptions);
605614
final includeValue = parsed?['include'];
606615
if (includeValue is String) {
607-
final include = includeValue.trim();
608-
if (include.startsWith('package:')) {
609-
includedPackage = include
610-
.substring('package:'.length)
611-
.split('/')
612-
.first;
616+
addPackageInclude(includeValue);
617+
} else if (includeValue is List) {
618+
for (final v in includeValue.whereType<String>()) {
619+
addPackageInclude(v);
613620
}
614621
}
615622
}
@@ -621,16 +628,15 @@ class ToolEnvironment {
621628
if (oldDevDependencies is Map<String, dynamic>) {
622629
final keptDevDependencies = <String, dynamic>{};
623630
for (final name in oldDevDependencies.keys) {
624-
if (name != includedPackage) continue;
631+
if (!includedPackages.contains(name)) {
632+
continue;
633+
}
625634
final value = oldDevDependencies[name];
626-
var passthrough = true;
627635
if (value is Map &&
628636
(value.containsKey('path') || value.containsKey('git'))) {
629-
passthrough = false;
630-
}
631-
if (passthrough) {
632-
keptDevDependencies[name] = value;
637+
continue;
633638
}
639+
keptDevDependencies[name] = value;
634640
}
635641
if (keptDevDependencies.isNotEmpty) {
636642
parsed['dev_dependencies'] = keptDevDependencies;

test/analysis_options_test.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,19 @@ linter:
116116
expect(json.decode(content), {'include': 'package:lints/other.yaml'});
117117
});
118118

119+
test('update includes from original', () {
120+
final content = updatePassthroughOptions(
121+
original:
122+
'include:\n'
123+
' - package:lints/other.yaml\n'
124+
' - package:lints/core.yaml\n',
125+
custom: '',
126+
);
127+
expect(json.decode(content), {
128+
'include': ['package:lints/other.yaml', 'package:lints/core.yaml'],
129+
});
130+
});
131+
119132
test('include only in custom', () {
120133
final content = updatePassthroughOptions(
121134
original: '',

0 commit comments

Comments
 (0)