Skip to content

Commit 4f36c50

Browse files
committed
πŸš€ Read formatter - page_width from analysis_options.yaml
1 parent 288c056 commit 4f36c50

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

β€Žpackages/core/lib/settings/config.dartβ€Ž

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import 'dart:io';
22

3+
// import 'package:collection/collection.dart';
4+
// import 'package:dart_style/dart_style.dart' show TrailingCommas;
35
import 'package:flutter_gen_core/settings/config_default.dart';
46
import 'package:flutter_gen_core/settings/pubspec.dart';
57
import 'package:flutter_gen_core/utils/cast.dart' show safeCast;
@@ -16,11 +18,18 @@ class Config {
1618
required this.pubspec,
1719
required this.pubspecFile,
1820
required this.sdkConstraint,
21+
// required this.formatterTrailingCommas,
22+
required this.formatterPageWidth,
1923
});
2024

2125
final Pubspec pubspec;
2226
final File pubspecFile;
2327
final VersionConstraint? sdkConstraint;
28+
29+
// TODO(ANYONE): Allow passing the trailing commas option after the SDK constraint was bumped to ^3.7.
30+
// final TrailingCommas? formatterTrailingCommas;
31+
32+
final int? formatterPageWidth;
2433
}
2534

2635
Config loadPubspecConfig(File pubspecFile, {File? buildFile}) {
@@ -102,10 +111,30 @@ Config loadPubspecConfig(File pubspecFile, {File? buildFile}) {
102111
sdkConstraint = VersionConstraint.parse(sdk);
103112
}
104113

114+
final analysisOptionsFile = File(
115+
normalize(join(basename(pubspecFile.parent.path), 'analysis_options.yaml')),
116+
);
117+
final analysisOptionsContent = switch (analysisOptionsFile.existsSync()) {
118+
true => analysisOptionsFile.readAsStringSync(),
119+
false => '',
120+
};
121+
final analysisOptionsMap = loadYaml(analysisOptionsContent) as YamlMap?;
122+
// final formatterTrailingCommas = switch (safeCast<String>(
123+
// analysisOptionsMap?['formatter']?['trailing_commas'],
124+
// )) {
125+
// final s? => TrailingCommas.values.firstWhereOrNull((e) => e.name == s),
126+
// _ => null,
127+
// };
128+
final formatterPageWidth = safeCast<int>(
129+
analysisOptionsMap?['formatter']?['page_width'],
130+
);
131+
105132
return Config._(
106133
pubspec: pubspec,
107134
pubspecFile: pubspecFile,
108135
sdkConstraint: sdkConstraint,
136+
// formatterTrailingCommas: formatterTrailingCommas,
137+
formatterPageWidth: formatterPageWidth,
109138
);
110139
}
111140

β€Žpackages/core/lib/utils/formatter.dartβ€Ž

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,16 @@ DartFormatter buildDartFormatterFromConfig(Config config) {
1313
sdkConstraint = VersionConstraint.parse('^$version');
1414
}
1515
final useShort = sdkConstraint.allowsAny(VersionConstraint.parse('<3.7.0'));
16+
17+
final pageWidth =
18+
config.pubspec.flutterGen.lineLength ?? config.formatterPageWidth;
19+
1620
return DartFormatter(
1721
languageVersion: useShort
1822
? DartFormatter.latestShortStyleLanguageVersion
1923
: DartFormatter.latestLanguageVersion,
20-
pageWidth: config.pubspec.flutterGen.lineLength,
24+
pageWidth: pageWidth,
25+
// trailingCommas: config.formatterTrailingCommas,
2126
lineEnding: '\n',
2227
);
2328
}

0 commit comments

Comments
Β (0)