Skip to content

Commit

Permalink
Better environment handling for SDKs, removing almost-duplicate metho…
Browse files Browse the repository at this point in the history
…d. (#1320)
  • Loading branch information
isoos authored Jan 23, 2024
1 parent b895859 commit 57e8fe3
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 42 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
## 0.22.0

- `ToolEnvironment.create()` takes `configHomeDir` to specify config the home
directory used for the analysis (helps switching different analyzer SDKs).
- `ToolEnvironment.create()` takes `pubHostedUrl` as `PackageAnalyzer.create()`
was removed.

**BREAKING CHANGES**

- Renamed `runProc` -> `runConstrained`.
- Removed:
- deprecated APIs
- `InspectOptions.checkRemoteRepository` - repositories are verified by default
- `PackageAnalyzer.create()`
- `ProcessOutput.asBytes`
- `Report.joinSection()`
- `ToolEnvironment`:
Expand Down
8 changes: 4 additions & 4 deletions bin/pana.dart
Original file line number Diff line number Diff line change
Expand Up @@ -144,14 +144,14 @@ Future main(List<String> args) async {

try {
final pubHostedUrl = result['hosted-url'] as String?;
final analyzer = await PackageAnalyzer.create(
final analyzer = PackageAnalyzer(await ToolEnvironment.create(
pubCacheDir: pubCacheDir,
panaCacheDir: Platform.environment['PANA_CACHE'],
sdkDir: result['dart-sdk'] as String?,
flutterDir: result['flutter-sdk'] as String?,
dartSdkDir: result['dart-sdk'] as String?,
flutterSdkDir: result['flutter-sdk'] as String?,
pubHostedUrl: pubHostedUrl,
environment: Platform.environment,
);
));
final options = InspectOptions(
pubHostedUrl: pubHostedUrl,
lineLength: int.tryParse(result['line-length'] as String? ?? ''),
Expand Down
24 changes: 0 additions & 24 deletions lib/src/package_analyzer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -46,30 +46,6 @@ class PackageAnalyzer {
PackageAnalyzer(this._toolEnv, {UrlChecker? urlChecker})
: _urlChecker = urlChecker ?? UrlChecker();

static Future<PackageAnalyzer> create({
String? sdkDir,
String? flutterDir,
String? pubCacheDir,
String? panaCacheDir,
String? pubHostedUrl,
String? dartdocVersion,
Map<String, String>? environment,
}) async {
return PackageAnalyzer(
await ToolEnvironment.create(
dartSdkDir: sdkDir,
flutterSdkDir: flutterDir,
pubCacheDir: pubCacheDir,
panaCacheDir: panaCacheDir,
environment: <String, String>{
if (pubHostedUrl != null) 'PUB_HOSTED_URL': pubHostedUrl,
...?environment,
},
dartdocVersion: dartdocVersion,
),
);
}

Future<Summary> inspectPackage(
String package, {
String? version,
Expand Down
25 changes: 15 additions & 10 deletions lib/src/sdk_env.dart
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,14 @@ class ToolEnvironment {
}

static Future<ToolEnvironment> create({
/// The path (usually in `$HOME/.config` on Linux) where applications may
/// store their local configuration data.
String? configHomeDir,
String? dartSdkDir,
String? flutterSdkDir,
String? pubCacheDir,
String? panaCacheDir,
String? pubHostedUrl,
Map<String, String>? environment,

/// When specified, this version of `dartdoc` will be initialized
Expand All @@ -102,20 +106,21 @@ class ToolEnvironment {
final resolvedFlutterSdk = await _resolve(flutterSdkDir);
final resolvedPubCache = await _resolve(pubCacheDir);
final resolvedPanaCache = await _resolve(panaCacheDir);
final env = <String, String>{
...?environment,
if (resolvedPubCache != null) _pubCacheKey: resolvedPubCache,
'CI': 'true', // suppresses analytics for both Dart and Flutter
};

final pubEnvValues = <String>[];
final origPubEnvValue = Platform.environment[_pubEnvironmentKey] ?? '';
pubEnvValues.addAll(origPubEnvValue
final origPubEnvValues = origPubEnvValue
.split(':')
.map((s) => s.trim())
.where((s) => s.isNotEmpty));
pubEnvValues.add('bot.pkg_pana');
env[_pubEnvironmentKey] = pubEnvValues.join(':');
.where((s) => s.isNotEmpty);

final env = <String, String>{
...?environment,
'CI': 'true', // suppresses analytics for both Dart and Flutter
if (resolvedPubCache != null) _pubCacheKey: resolvedPubCache,
if (pubHostedUrl != null) 'PUB_HOSTED_URL': pubHostedUrl,
if (configHomeDir != null) 'XDG_CONFIG_HOME': configHomeDir,
_pubEnvironmentKey: [...origPubEnvValues, 'bot.pkg_pana'].join(':'),
};

// Flutter stores its internal SDK in its bin/cache/dart-sdk directory.
// We can use that directory only if Flutter SDK path was specified,
Expand Down
4 changes: 2 additions & 2 deletions test/end2end_light_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ void main() {
.resolveSymbolicLinksSync();
final pubCacheDir = p.join(tempDir, 'pub-cache');
Directory(pubCacheDir).createSync();
analyzer = await PackageAnalyzer.create(
analyzer = PackageAnalyzer(await ToolEnvironment.create(
pubCacheDir: pubCacheDir,
dartdocVersion: 'any',
);
));
});

tearDownAll(() async {
Expand Down
4 changes: 2 additions & 2 deletions test/end2end_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ void main() {
httpClient: httpClient,
blockPublishAfter: goldenDirLastModified,
);
analyzer = await PackageAnalyzer.create(
analyzer = PackageAnalyzer(await ToolEnvironment.create(
pubCacheDir: pubCacheDir,
panaCacheDir: panaCacheDir,
pubHostedUrl: 'http://127.0.0.1:${httpServer.port}',
dartdocVersion: 'any',
);
));
});

tearDownAll(() async {
Expand Down

0 comments on commit 57e8fe3

Please sign in to comment.