Skip to content

Commit

Permalink
Use package:extension_discovery to detect DevTools extensions (#6139)
Browse files Browse the repository at this point in the history
  • Loading branch information
kenzieschmoll authored Aug 10, 2023
1 parent 4efbffb commit 1cd425c
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 25 deletions.
47 changes: 22 additions & 25 deletions packages/devtools_shared/lib/src/extensions/extension_manager.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import 'dart:io';

import 'package:extension_discovery/extension_discovery.dart';
import 'package:path/path.dart' as path;

import 'extension_model.dart';
Expand Down Expand Up @@ -57,17 +58,31 @@ class ExtensionsManager {
devtoolsExtensions.clear();

if (rootPath != null) {
// TODO(kenz): use 'findExtensions' from package:extension_discovery once it
// is published.
// final extensions = findExtensions(
// 'devtools',
// packageConfig: '$rootPath/.dart_tool/package_config.json',
// );
final extensions = <_Extension>[];
late final List<Extension> extensions;
try {
extensions = await findExtensions(
'devtools',
packageConfig: Uri.parse(
path.join(
rootPath,
'.dart_tool',
'package_config.json',
),
),
);
} catch (e) {
print('[ERROR] `findExtensions` failed: $e');
extensions = <Extension>[];
}

for (final extension in extensions) {
final config = extension.config;
if (config is! Map) {
// Fail gracefully. Invalid content in the extension's config.json.
print(
'[WARNING] invalid config.json content for ${extension.package}:\n'
'$config',
);
continue;
}
final configAsMap = config as Map<String, Object?>;
Expand Down Expand Up @@ -161,21 +176,3 @@ Future<void> copyPath(String from, String to) async {
}
}
}

/// TODO(kenz): remove this class. This is copied from
/// package:extension_discovery, which is drafed here:
/// https://github.com/dart-lang/tools/pull/129. Remove this temporary copy once
/// package:extension_discovery is published.
class _Extension {
_Extension._({
required this.package,
required this.rootUri,
required this.packageUri,
required this.config,
});

final String package;
final Uri rootUri;
final Uri packageUri;
final Object? config;
}
1 change: 1 addition & 0 deletions packages/devtools_shared/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ environment:

dependencies:
collection: ^1.15.0
extension_discovery: ^1.0.0
path: ^1.8.0
shelf: ^1.1.0
sse: ^4.1.2
Expand Down

0 comments on commit 1cd425c

Please sign in to comment.