blob: 32daa716136462d2fe5b1f8ce1ed3a1b012438e5 [file] [edit]
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:isolate';
import 'package:path/path.dart' as p;
/// Returns the path to the `dwds` package root directory.
Future<String> get dwdsPackageRoot async {
final uri = await Isolate.resolvePackageUri(
Uri.parse('package:dwds/dwds.dart'),
);
if (uri == null) {
throw StateError('Could not resolve package:dwds');
}
// uri is file:///.../pkg/dwds/lib/dwds.dart
// We need to go up 2 levels to get to pkg/dwds
return p.dirname(p.dirname(uri.toFilePath()));
}
/// Returns the absolute path to a file or directory relative to the `dwds`
/// package root.
Future<String> dwdsPath(String pathFromDwds) async {
return p.normalize(p.join(await dwdsPackageRoot, pathFromDwds));
}